您的位置:首页 > 运维架构

windowX64 vs2012环境下静态链接编译32位libcurl 支持openssl

2016-11-29 00:19 309 查看
编译整整花了我一个周末,快要疯了,不是libcurl版本和openssl版本不兼容,就是一系列配置问题,各种报错,终于编译通过了,特别记录下来,防止 以后忘记了!


环境信息:

操作系统:windows10 64位

VS版本:2012

libcurl版本:7.29.0

openssl版本:1.0.1u

编译结果:libcurl x86 支持openssl的静态链接库,openssl也是静态链接库,msvcrt运行时也是静态链接,都是release模式

一、编译openssl 

        0、安装nasm汇编编译器

1、先安装perl for window安装包(编译脚本perl语言写的)

2、打开VS2012 X86命令行工具,执行命令ppm install dmake   安装dmake

3、进入openssl源代码要目录

4、执行命令perl Configure VC-WIN32

5、执行命令ms\do_ms

6、执行命令nmake -f ms\nt.mak

7、编译完成(*.lib文件在out32目录下,头文件在inc32目录下)

二、编译libcurl

    |_libcurl

    .......|_winbuild

    |

    |_deps

      .....|_ lib

      .....|_ include

      .....|_ bin  

1、将目录结构建立成上面的样式!!!非常重要!!!

2、将openssl/out32目录下的*.lib文件都复制到deps/lib目录下

3、将openssl/inc32/openssl目录下的所有文件都复制到deps/include/openssl目录下

4、打开VS2012 X86命令行工具

5、进入libcurl/winbuild目录

6、执行命令nmake /f makefile.vc mode=static WITH_SSL=static RTLIBCFG=static  DEBUG=no ENABLE_SSPI=no

7、编译完成(编译结果在libcurl\builds\libcurl-vc-x86-release-static-ssl-static-ipv6-spnego目录下)

 备注:当libcurl_a.lib引用项目中一起编译的时候出现"libcurl_a.lib模块对于SAFESEH 映像是不安全的"的错误,去项目属性-》配置属性-》链接器-》命令行:在【其他选项】中输入/SAFESEH:NO 即可解决,至于为什么,我也不是很了解,有大神知道的,还望留言! 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息