VS2017編譯libcurl {zlib+openssl+libssh2}

VS2017編譯libcurl {zlib+openssl+libssh2}

前言

前提條件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包含內容如下:
    在這裏插入圖片描述

openssl編譯

  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內容如下:
在這裏插入圖片描述

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項目導入。項目有如圖所示的配置
    在這裏插入圖片描述
    本文環境只編譯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內容如下:
    在這裏插入圖片描述
    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項目導入。項目有如圖所示的配置
    在這裏插入圖片描述
    本文環境只編譯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內容如下:
    在這裏插入圖片描述
    lib內容如下:
    在這裏插入圖片描述

結束

按照上述配置環境和編譯過程,編譯順利完成!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章