MSVC libcurl+openssl+zlib windows 编译过程

MSVC libcurl+openssl+zlib windows 编译过程

libcurl下载: https://curl.haxx.se/windows/.

为什么自己要编译windows版本libcurl
  • curl官网编译出来的windows库文件为.a 后缀(原因是libcurl拿mingw编译) MSVC无法直接使用,需要转换为lib文件。
  • 下载的pe文件无源码,无pdb符号文件。 对于源码调试问题定位不友好。
  • 官网给出的pe文件已经静态链接到指定第三方库,无法灵活定制化。
openssl(1.1.1g)编译
  1. 打开vs 命令行工具(注意编译相应位数需对应x86与x64)
  2. 切换到openssl源码根目录
  3. 如未安装ActivePerl需安装(openssl 依赖此工具生成makefile文件)
  4. vs命令行 运行如下命令:
    • 32位 perl Configure VC-WIN32 no-asm --prefix=“D:\openssl-build\win32-release”
    • 64位 perl Configure VC-WIN64A no-asm --prefix=“D:\openssl-build\win64-release”
      –prefix 表示指定 openssl输出目录,目录下会生成include、html、 lib、 bin 文件夹
  5. 运行nmake && nmake install 即可生成openssl 二进制库文件
注意
  1. 同时编译32位与64位库时最好是把源码放到两个不同目录, 相同目录可能由于缓存会导致编译出错。
  2. 从openssl-1.1.x版本开始不在生成libeay32.lib, ssleay32.lib库,与之对应的为libcrypto.lib与libssl.lib, 使用时需注意库文件名的替换
zlib(1.2.11)编译
  1. 进入源码根目录contrib\vstudio\VC*
  2. 打开zlibvc.sln vs解决方案文件
  3. 选择对应的配置与平台编译zlibvc工程即可生成 zlib库
libcurl msvc两种编译方式
vs dos命令行工具编译
**注意**编译64位和32库时应当启动相应的vs命令行工具
  1. vs 命令行工具切换到curl源码路径下的winbuild路径

  2. 具体编译配置命令可以查看winbuild路径下的BUILD.WINDOWS.txt 文本

  3. 执行如下命令:

    • 32位 nmake /f Makefile.vc mode=dll VC=15 WITH_SSL=dll WITH_ZLIB=dll GEN_PDB=yes MACHINE=x64 SSL_PATH=./…/deps/openssl ZLIB_PATH=./…/deps/zlib
    • 64位 nmake /f Makefile.vc mode=dll VC=15 WITH_SSL=dll WITH_ZLIB=dll GEN_PDB=yes MACHINE=x86 SSL_PATH= ./deps/openssl ZLIB_PATH=./deps/zlib
      命令options 可以查看步骤2中的文本
      SSL_PATH与ZLIB_PATH 可以自定义目录。deps(本人依赖文件夹名)下分别建立如下目录:

    deps

    openssl

    lib
    include
    bin

    zlib

    lib
    include
    bin

    把上面编译出来的openssl与zlib库分别放入对应目录,其他zlib库拷贝zconfig.h zlib.h zutil.h即可。

  4. 等待编译完成后在源码根目录下即会生成一个builds文件夹,里面就是生成好的libcurl库了。

vs IDE 编译
  1. 进入源码根目录下projects\Windows文件夹下, 找到与本机安装对饮的vs版本VC解决方案文件
  2. 打开解决方案文件后,根据自己需要的配置与平台,配置好对应依赖的库与头文件后直接编译即可。

#####备注:
如有问题欢迎留言交流, 需要编译好的文件也可留言。 感谢阅读!!!!

猜你喜欢

转载自blog.csdn.net/huang12041/article/details/108358879