VS2017编译libcurl {zlib+openssl+libssh2}

VS2017编译libcurl {zlib+openssl+libssh2}

  • 前言
  • zlib编译
  • openssl-1.1.0l编译
  • openssl-1.0.2t编译
  • libssh2编译
  • curl编译
  • 结束

前言

前提条件libcurl开发库需要zlib和openssl的支持。
本文记录完整编译方案。

zlib编译

  1. 环境准备
    zlib:zlib-1.2.11 http://www.zlib.net/
  2. 步骤
    1)导入zlibvc.vcxproj (目标所在目录: xxx\zlib-1.2.11\contrib\vstudio\vc15)
    2)更改zlibvc部分属性:
    配置管理器为:x64
    【常规】->【目标文件名】内容改为zlib_zip1211;
    【C/C++】->【预处理器定义】更改ZLIB_WINAPI–>ZLIB_DLL (为了编译出的dll可以使用zip相关接口)
    【链接器】->【常规】->【输出文件】内容改为$(OutDir)$(TargetName).dll
    【链接器】->【高级】->【导入库】内容改为$(OutDir) $(TargetName).lib
  3. install
    本文环境统一将依赖库组织到 @统一文件夹
    zlib安装目录:@统一文件夹\zlib_zip_1_2_11_x64
    安装文件夹组织如下:
    在这里插入图片描述
    lib和bin文件夹组织如下:
    在这里插入图片描述
    include包含内容如下:
    VS2017编译libcurl {zlib+openssl+libssh2}_第1张图片

openssl-1.1.0l编译

  1. 环境准备
    openssl:openssl-1.1.0l
    zlib:zlib-1.2.11 (上述zlib编译结果)
  2. 步骤
    编译前仔细阅读以下INSTALL 和 NOTES.WIN 这两个文件,版本1.0.2对应的文件叫 INSTALL.W32和INSTALL.W64,也不一样,编译过程基本上都在这两个文件里面。
    1)安装perl和汇编工具,按照NOTES.WIN里面推荐的去安装 ActivePerl和nasm,一般安装最新版即可。注:官网下载ActivePerl太慢,可以从360的软件管家里面搜索安装
    2)以管理员身份打开VS2017的命令行程序,本文编译x64版本环境,打开 “x64 Native Tools Command Prompt for VS 2017”。在命令行中切换至openssl-1.1.0l 解压根目录,按照如下命令开始编译
>> perl Configure VC-WIN64A --prefix=@统一文件夹\openssl_1_1_0l_vc15_x64 --with-zlib-include=@统一文件夹\zlib_zip_1_2_11_vc15_x64\include --with-zlib-lib=@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib\release\zlib_zip1211.lib zlib-dynamic
# VC-WIN64A:64位版本编译 
# --prefix:编译结果安装目录
# --with-zlib-include:zlib库包含目录
# --with-zlib-lib:zlib库导入库文件
# zlib-dynamic:zlib以dll形式引入
# 此命令行运行过程中会报 @perl openssl错误图 所示错误,忽略即可
>> nmake
>> nmake test
>> nmake install
>> nmake clean

perl openssl错误图如下所示
perl openssl错误图
3. install
命令行执行完毕后,内容组织如下:
openssl安装目录:@统一文件夹\openssl_1_1_0l_vc15_x64
安装文件夹组织如下:
在这里插入图片描述
lib内容如下:
在这里插入图片描述
bin内容如下:
VS2017编译libcurl {zlib+openssl+libssh2}_第2张图片

openssl-1.0.2t编译

  1. 环境准备
    openssl:openssl-1.0.2t
    zlib:zlib-1.2.11 (上述zlib编译结果)
  2. 步骤
    编译前仔细阅读以下INSTALL.W64文件,编译过程基本上都在这个文件里面。
    1)安装perl和汇编工具,按照INSTALL.W64里面推荐的去安装 ActivePerl和nasm,一般安装最新版即可。注:官网下载ActivePerl太慢,可以从360的软件管家里面搜索安装
    2)以管理员身份打开VS2017的命令行程序,本文编译x64版本环境,打开 “x64 Native Tools Command Prompt for VS 2017”。在命令行中切换至openssl-1.1.0l 解压根目录,按照如下命令开始编译
>> perl Configure VC-WIN64A --prefix=@统一文件夹\openssl_1_0_2t_vc15_x64 --with-zlib-include=@统一文件夹\zlib_zip_1_2_11_vc15_x64\include --with-zlib-lib=@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib\zlib_zip1211.lib zlib-dynamic
# VC-WIN64A:64位版本编译 
# --prefix:编译结果安装目录
# --with-zlib-include:zlib库包含目录
# --with-zlib-lib:zlib库导入库文件
# zlib-dynamic:zlib以dll形式引入

>> ms\do_win64a
>> nmake -f ms\ntdll.mak
# 这两步命令结束编译基本完成
>> cd out32dll
>> ..\ms\test
# 这两步命令测试编译结果
# 编译成功,会提示"passed all tests"
>> nmake -f ms\ntdll.mak install
# 安装到指定目录
  1. install
    命令行执行完毕后,内容组织如下:
    openssl安装目录:@统一文件夹\openssl_1_0_2t_vc15_x64
    安装文件夹组织如下:
    在这里插入图片描述
    lib内容如下:
    VS2017编译libcurl {zlib+openssl+libssh2}_第3张图片
    bin内容如下:
    在这里插入图片描述

libssh2编译

  1. 环境准备
    libssh2:libssh2-1.9.0 https://www.libssh2.org/
    zlib:zlib-1.2.11 (上述zlib编译结果)
    openssl:openssl_1_1_0l (上述openssl编译结果)

  2. 步骤
    1)vs2017项目准备
    libssh2-1.9.0解压根目录\win32\libssh2.dsw项目导入。项目有如图所示的配置
    VS2017编译libcurl {zlib+openssl+libssh2}_第4张图片
    本文环境只编译OpenSSL DLL Debug | x64OpenSSL DLL Release | x64
    配置【Windows SDK 版本】和【平台工具集】。
    【常规】->【目标文件名】内容改为libssh2190;
    【C/C++】->【常规】更新openssl includezlib include
    (这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\include】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\include】)
    【链接器】->【常规】->【附加库目录】更新openssl libzlib lib
    (这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\lib】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib】)
    【链接器】->【输入】更新导入库名字
    libcrypto.lib libssl.lib zlib_zip1211.lib (上述编译的结果)

  3. install
    配置完成后,启动vs2017编译即可。
    libssh2安装目录:@统一文件夹\libssh2_1_9_0_vc15_x64
    安装文件夹组织如下:
    在这里插入图片描述
    include内容如下:
    VS2017编译libcurl {zlib+openssl+libssh2}_第5张图片
    lib内容如下:
    在这里插入图片描述

curl编译

  1. 环境准备
    curl:curl-7.66.0 https://curl.haxx.se/download.html
    zlib:zlib-1.2.11 (上述zlib编译结果)
    openssl:openssl_1_1_0l (上述openssl编译结果)
    libssh2:libssh2-1.9.0 (上述openssl编译结果)

  2. 步骤
    1)vs2017项目准备
    curl-7.66.0解压根目录\projects\Windows\VC15\curl-all.sln项目导入。项目有如图所示的配置
    VS2017编译libcurl {zlib+openssl+libssh2}_第6张图片
    本文环境只编译DLL Debug - DLL OpenSSL - DLL LibSSH2 | x64DLL Release - DLL OpenSSL - DLL LibSSH2 | x64
    配置【Windows SDK 版本】和【平台工具集】。
    【常规】->【目标文件名】内容改为libcurl7660;
    【C/C++】->【常规】更新openssl includezlib include 以及 libssh2 include
    (这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\include】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\include】和【@统一文件夹\libssh2_1_9_0_vc15_x64\include】)
    【C/C++】->【预处理器】添加HAVE_ZLIB_H (zlib的支持)
    【链接器】->【常规】->【附加库目录】更新openssl libzlib lib 以及 libssh2 lib
    (这里就是【@统一文件夹\openssl_1_1_0l_vc15_x64\lib】和【@统一文件夹\zlib_zip_1_2_11_vc15_x64\lib】和【@统一文件夹\libssh2_1_9_0_vc15_x64\lib】)
    【链接器】->【输入】更新导入库名字
    libcrypto.lib libssl.lib zlib_zip1211.lib libssh2190.lib (上述编译的结果)

    这里存在问题,上述导入的项目默认情况下,Curl_ssh_init Curl_ssh_cleanup Curl_ssh_version函数没有定义,需要为项目引入定义这些函数的cpp。路径为:@curl解压根目录\lib\vssh\libssh2.c

  3. install
    配置完成后,启动vs2017编译即可。
    curl安装目录:@统一文件夹\curl_7_66_0_vc15_x64
    安装文件夹组织如下:
    在这里插入图片描述
    include内容如下:
    VS2017编译libcurl {zlib+openssl+libssh2}_第7张图片
    lib内容如下:
    VS2017编译libcurl {zlib+openssl+libssh2}_第8张图片

结束

按照上述配置环境和编译过程,编译顺利完成!

上述编译中,使用openssl1.1.0l编译的libssh2,在使用过程中_libssh2_openssl_crypto_exit函数会崩溃。换成openssl1.0.2t后解决。

你可能感兴趣的:(开发环境)