前言
前提條件libcurl開發庫需要zlib和openssl的支持。
本文記錄完整編譯方案。
zlib編譯
- 環境準備
zlib:zlib-1.2.11 http://www.zlib.net/ - 步驟
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 - install
本文環境統一將依賴庫組織到 @統一文件夾 下
zlib安裝目錄:@統一文件夾\zlib_zip_1_2_11_x64
安裝文件夾組織如下:
lib和bin文件夾組織如下:
include包含內容如下:
openssl編譯
- 環境準備
openssl:openssl-1.1.0l
zlib:zlib-1.2.11 (上述zlib編譯結果) - 步驟
編譯前仔細閱讀以下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錯誤圖如下所示
3. install
命令行執行完畢後,內容組織如下:
openssl安裝目錄:@統一文件夾\openssl_1_1_0l_vc15_x64
安裝文件夾組織如下:
lib內容如下:
bin內容如下:
libssh2編譯
-
環境準備
libssh2:libssh2-1.9.0 https://www.libssh2.org/
zlib:zlib-1.2.11 (上述zlib編譯結果)
openssl:openssl_1_1_0l (上述openssl編譯結果) -
步驟
1)vs2017項目準備
libssh2-1.9.0解壓根目錄\win32\libssh2.dsw項目導入。項目有如圖所示的配置
本文環境只編譯OpenSSL DLL Debug | x64 和 OpenSSL DLL Release | x64。
配置【Windows SDK 版本】和【平臺工具集】。
【常規】->【目標文件名】內容改爲libssh2190;
【C/C++】->【常規】更新openssl include 和 zlib include
(這裏就是【@統一文件夾\openssl_1_1_0l_vc15_x64\include】和【@統一文件夾\zlib_zip_1_2_11_vc15_x64\include】)
【鏈接器】->【常規】->【附加庫目錄】更新openssl lib 和 zlib lib
(這裏就是【@統一文件夾\openssl_1_1_0l_vc15_x64\lib】和【@統一文件夾\zlib_zip_1_2_11_vc15_x64\lib】)
【鏈接器】->【輸入】更新導入庫名字
libcrypto.lib libssl.lib zlib_zip1211.lib (上述編譯的結果) -
install
配置完成後,啓動vs2017編譯即可。
libssh2安裝目錄:@統一文件夾\libssh2_1_9_0_vc15_x64
安裝文件夾組織如下:
include內容如下:
lib內容如下:
curl編譯
-
環境準備
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編譯結果) -
步驟
1)vs2017項目準備
curl-7.66.0解壓根目錄\projects\Windows\VC15\curl-all.sln項目導入。項目有如圖所示的配置
本文環境只編譯DLL Debug - DLL OpenSSL - DLL LibSSH2 | x64 和 DLL Release - DLL OpenSSL - DLL LibSSH2 | x64。
配置【Windows SDK 版本】和【平臺工具集】。
【常規】->【目標文件名】內容改爲libcurl7660;
【C/C++】->【常規】更新openssl include 和 zlib 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 lib 和 zlib 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
-
install
配置完成後,啓動vs2017編譯即可。
curl安裝目錄:@統一文件夾\curl_7_66_0_vc15_x64
安裝文件夾組織如下:
include內容如下:
lib內容如下:
結束
按照上述配置環境和編譯過程,編譯順利完成!