vc2015 编译libcurl带openssl
2016-07-25 16:43
405 查看
1.先编译zlib下载地址 http://zlib.net/
我这边vc2015编译需要配置环境变量,不知道是装了wdk的原因还是多个vc版本的原因
设置环境变量lib和include路径
INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\sys
LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64
然后用vc2015的控制台命令,进入到代码路径
nmake -f win32\Makefile.msc clean
nmake -f win32\Makefile.msc
编译完成后,修改lib路径为x86路径,注销系统,重新执行vc2015的控制台(x86)版本,即可生成对应的dll和lib
如果需要编译mt版本的,修改Makefile.msc中的CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) 中的MD为MT
这编译出来的是realse版本的,如果debug版本项目使用realse版本zlib的时候,需要将多线程调试 DLL (/MDd)" 改为 "多线程 DLL (/MD)
2.编译openssl http://www.cnblogs.com/ultracpp/p/3463110.html
3.编译libcurl
下载地址 https://curl.haxx.se/download.html 编译主要参考自带的文档 winbuild\BUILD.WINDOWS.txt
同样修改 lib路径(同上)
同样使用vc命令行,cd到curl-*\winbuild路径下配置deps目录
切换x86的时候直接用x86的lib替换掉就可以了
执行命令如:
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.0\deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.0\deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.3\deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.3\deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86
Enable use of Windows IDN APIs, defaults to yes Requires Windows Vista or later
如果编译失败,提示连接错误之类的,可以尝试直接清空builds目录下面的所有文件,再来一次
如果出现在xp下面运行无法定位程序输入点GetTickCount64的话,需要自己手动修改MakefileBuild.vc文件,找到
!IF "$(VC)"=="6"
CC_NODEBUG = $(CC) /O2 /DNDEBUG
CC_DEBUG = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
CFLAGS = /I. /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
!ELSE
CC_NODEBUG = $(CC) /O2 /DNDEBUG
CC_DEBUG = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd /W3
CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL
!ENDIF
修改后面的
CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_USING_V110_SDK71_
找到(后面也增加/D_USING_V110_SDK71_)
CURL_CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_USING_V110_SDK71_
CURL_LFLAGS = /nologo /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console,"5.01" /machine:$(MACHINE)
原因看config-win32.h里面的
# if defined(_USING_V110_SDK71_)
# define VS2012_DEF_TARGET 0x0501
# else
# define VS2012_DEF_TARGET 0x0600
# endif
编译完成后会得到builds\libcurl-vc14-x86-release-dll-ssl-dll-zlib-dll-ipv6-sspi目录,里面的东西就是我们想要的了
不过,得到的libcurl好像并没有导入zlib,尽管上面的命令是动态导入的dll
我这边vc2015编译需要配置环境变量,不知道是装了wdk的原因还是多个vc版本的原因
设置环境变量lib和include路径
INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\sys
LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64
然后用vc2015的控制台命令,进入到代码路径
nmake -f win32\Makefile.msc clean
nmake -f win32\Makefile.msc
编译完成后,修改lib路径为x86路径,注销系统,重新执行vc2015的控制台(x86)版本,即可生成对应的dll和lib
如果需要编译mt版本的,修改Makefile.msc中的CFLAGS = -nologo -MD -W3 -O2 -Oy- -Zi -Fd"zlib" $(LOC) 中的MD为MT
这编译出来的是realse版本的,如果debug版本项目使用realse版本zlib的时候,需要将多线程调试 DLL (/MDd)" 改为 "多线程 DLL (/MD)
2.编译openssl http://www.cnblogs.com/ultracpp/p/3463110.html
3.编译libcurl
下载地址 https://curl.haxx.se/download.html 编译主要参考自带的文档 winbuild\BUILD.WINDOWS.txt
同样修改 lib路径(同上)
同样使用vc命令行,cd到curl-*\winbuild路径下配置deps目录
切换x86的时候直接用x86的lib替换掉就可以了
执行命令如:
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.0\deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.0\deps" WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.3\deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x64
nmake /f Makefile.vc mode=dll VC=14 WITH_DEVEL="e:\curl-7.50.3\deps" ENABLE_IDN=no WITH_SSL=dll WITH_ZLIB=dll DEBUG=no MACHINE=x86
Enable use of Windows IDN APIs, defaults to yes Requires Windows Vista or later
如果编译失败,提示连接错误之类的,可以尝试直接清空builds目录下面的所有文件,再来一次
如果出现在xp下面运行无法定位程序输入点GetTickCount64的话,需要自己手动修改MakefileBuild.vc文件,找到
!IF "$(VC)"=="6"
CC_NODEBUG = $(CC) /O2 /DNDEBUG
CC_DEBUG = $(CC) /Od /Gm /Zi /D_DEBUG /GZ
CFLAGS = /I. /I../lib /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL
!ELSE
CC_NODEBUG = $(CC) /O2 /DNDEBUG
CC_DEBUG = $(CC) /Od /D_DEBUG /RTC1 /Z7 /LDd /W3
CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL
!ENDIF
修改后面的
CFLAGS = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_USING_V110_SDK71_
找到(后面也增加/D_USING_V110_SDK71_)
CURL_CFLAGS = /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_USING_V110_SDK71_
CURL_LFLAGS = /nologo /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console,"5.01" /machine:$(MACHINE)
原因看config-win32.h里面的
# if defined(_USING_V110_SDK71_)
# define VS2012_DEF_TARGET 0x0501
# else
# define VS2012_DEF_TARGET 0x0600
# endif
编译完成后会得到builds\libcurl-vc14-x86-release-dll-ssl-dll-zlib-dll-ipv6-sspi目录,里面的东西就是我们想要的了
不过,得到的libcurl好像并没有导入zlib,尽管上面的命令是动态导入的dll
相关文章推荐
- nginx 404页面返回404的状态码
- linux下MYSQL常用命令
- BUG-Auto property synthesis will not synthesize property 'description' because it is 'readwrite'
- openpyxl
- shell/命令行下的光标移动等操作技巧
- linux 中的MYSQL命令汇总 适合学习linux下配置mysql的朋友
- Emgu在引用openCV时提示:无法加载 DLL“opencv_core2410”: 找不到指定的模块。
- Apache实现Tomcat集群
- 【CentOS】比较有用的find系列工具
- auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结
- tomcat7 生产环境优化(有些JVMtomcat5 6上的参数被取消了)
- 全球50大在线学习网站
- 关于linux网络基础记录
- popuWindow和软键盘共存
- Linux定时执行任务
- Linux -trap
- Mac 安装运行 Docker for Mac
- Linux内核之进程调度
- 使用 CAS 在 Tomcat 中实现单点登录
- linux tc 笔记整理(traffic control)