Visual Studio编译 libuv

libuv 是 Node 的新跨平台抽象层,用于抽象 Windows 的 IOCP 及 Unix 的 libev。作者打算在这个库的包含所有平台的差异性。

特性:
    非阻塞 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 工具链

以下是正题:

(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-target

        :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

你可能感兴趣的:(Visual Studio编译 libuv)