libuv之64位编译方法和入门示例
Posted 岬淢箫声
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了libuv之64位编译方法和入门示例相关的知识,希望对你有一定的参考价值。
如何编译64位 libuv
关于Socket基本编程模型,请参考:
- Socket编程模型之简单选择模型
- Socket编程模型之异步选择模型
- Socket编程模型之事件选择模型
- Socket编程模型之重叠IO(Overlapped I/O)模型
- Socket编程模型之完成端口模型
造轮子太费力,造出来的轮子还没现成的开源框架做的稳定和效率高。libuv不仅把windows平台的网络编程模型做好了,而且也把Linux平台的编程模型做好了,这个强大的工具还能用于MacOS平台。编辑libuv源代码的输入库提示libuv封装了WSASetup等接口。基于libuv功能的强大、稳定和丰富可用等优异特点,学习和研究libuv是非常有必要的。
libuv的最新版本是1.21.0,下载地址:https://dist.libuv.org/dist/v1.21.0/libuv-v1.21.0.tar.gz。它的源代码编译起来还是有点麻烦的,它的编译过程需要Python 2.7的运行时环境,还要一个python库:gyp。这个东西是Google做的,源代码、whl包都不在pypi上面,墙内的国内用户瞪圆双眼也无可奈何。我遇到的错误如下图所示:
好在我找到了一个小窍门:
- libuv编译文档说明,编译工具支持识别build文件夹下的gyp。
- node-gyp自带了gyp源代码。
- npmjs.com的访问是畅通无阻的。
我从npmjs.com下载了node-gyp,然后从中提取gyp到libuv源代码下的build文件夹下。于是有了这一幕错误:
错误原因是libuv生成的解决方案平台是Visual Studio 2005,而且生成配置里也没有64位。我用Visual Studio 2017打开解决方案uv.sln,新增x64位编译配置。最终,libuv.lib生成成功,可以拿来用了。
libuv入门
总共只有两个代码文件:main.cpp和Makefile。main.cpp源代码如下:
#include #include int main(int argc,char** argv) uv_loop_t* pnew= uv_loop_new(); std::cout<<"hello libuv."<<std::endl; uv_loop_close(pnew); return 0;
Makefile源代码如下:
CFLAGS=/D "_WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_CRT_SECURE_NO_WARNINGS" /D "_UNICODE" /D "UNICODE" CPPFLAGS=/D "_WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_CRT_SECURE_NO_WARNINGS" /D "_UNICODE" /D "UNICODE" /I../references/include LDFLAGS=/LIBPATH:../references/lib COMMON_LIBS=ws2_32.lib advapi32.lib user32.lib kernel32.lib userenv.lib iphlpapi.lib psapi.lib libuv.lib COMMON_OBJS= CONFIGURATION=debug A01_NAME=a01 A01_OBJS=$(CONFIGURATION)\\main.obj default: A01_EXE A01_EXE: @if exist $(CONFIGURATION) rd /s /q $(CONFIGURATION) @mkdir $(CONFIGURATION) @cl /nologo /ZI /EHsc /W3 /MDd /W3 /c $(CPPFLAGS) /Fd:$(CONFIGURATION)\\ /Fo:$(CONFIGURATION)\\ *.cpp @link /nologo /DEBUG /MACHINE:X64 /MANIFEST:NO /OUT:$(CONFIGURATION)\\$(A01_NAME).exe /PDB:$(CONFIGURATION)\\$(A01_NAME).pdb /SUBSYSTEM:CONSOLE $(LDFLAGS) $(A01_OBJS) $(COMMON_LIBS) @echo generate A01 executable files finished. clean: @if exist $(CONFIGURATION) rd /s /q $(CONFIGURATION)
编译方法:
从开始菜单打开Visual Studio 2017 x64命令行环境,如下图所示:
打开之后cd
到代码目录下,运行nmake
命令即可。生成结果是debug\\a01.exe
。
以上是关于libuv之64位编译方法和入门示例的主要内容,如果未能解决你的问题,请参考以下文章