libuv 是 Node 的新跨平台抽象层,用于抽象 Windows 的 IOCP 及 Unix 的 libev。做者打算在这个库的包含全部平台的差别性。python
特性:
非阻塞 TCP 套接字
非阻塞命名管道
UDP
定时器
子进程生成
经过 uv_getaddrinfo 实现异步 DNS
异步文件系统 API:uv_fs_*
高分辨率时间:uv_hrtime
正在运行程序路径查找:uv_exepath
线程池调度:uv_queue_work
TTY控制的ANSI转义代码: uv_tty_t
文件系统事件如今支持 inotify, ReadDirectoryChangesW 和 kqueue。很快会支持事件端口:uv_fs_event_t
进程间的 IPC 与套接字共享:uv_write2异步
已受支持的平台:
Microsoft Windows 操做系统,如 Windows XP SP2。使用 Visual Studio 或 MinGW 构建
Linux 2.6 使用 GCC 工具链
MacOS 使用 GCC 或 XCode 工具链
Solaris 121 或以后版本,使用 GCC 工具链svn
如下是正题:工具
(1)采用VS2005编译( 以失败了结)
几点经验:
1.默认安装python时无环境变量,要在环境变量里增长 python的安装路径,path c:\python27等,若是已经有了path名,在值的后面加“;”分号,再加c:\python27
2.运行libuv下载目录里的 vcbuild.bat会提示 Visual Studio没有找到,是由于它只支持vs2008和vs2010.
3.打记事本打开vcbuild.bat,增长对vs2005的支持,红色为新增长部分,此时能够生成 uv.sln文件
@rem Look for Visual Studio 2010
if not defined VS100COMNTOOLS goto vc-set-2008
if not exist "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2008
call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
set GYP_MSVS_VERSION=2010
goto select-target学习
:vc-set-2008
@rem Look for Visual Studio 2008
if not defined VS90COMNTOOLS goto vc-set-2005
if not exist "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-notfound
call "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
echo Warning: building with Visual Studio 2008 is currently not supported.
set GYP_MSVS_VERSION=2008
goto select-targetui
:vc-set-2005
@rem Look for Visual Studio 2005
if not defined VS80COMNTOOLS goto vc-set-notfound
if not exist "%VS80COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-notfound
call "%VS80COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
echo Warning: building with Visual Studio 2005 is currently not supported.
set GYP_MSVS_VERSION=2005
goto select-target操作系统
用VS2005编译uv.sln发现各类错误,其中有stdint.h 文件缺乏,读写锁未定义等,最后放弃线程
(2)VS2010上进行
很折腾,要安装vs2010要很长时间,完成后再次运行vcbuild.bat会生成新的uv.sln能够顺利编译成功,但不久会发现,晓以电脑太卡了,果断卸载了2010.进程
(3)vs2008上进行
很顺利,电脑不卡了事件
(4)总结: libuv在window下编译最好用VS2008,这个过程当中要注意python、svn等软件的配置。 下一阶段将进行libuv的系统学习,欢迎交流 qq 601880671