編譯 libcurl 7.45.0 + zlib 1.2.8 + openssl 1.0.2d


前言:我發誓,Windows下C++的依賴庫是安裝起來最啰嗦最繁瑣最麻煩的,比Linux下那個make install變態多了,為了防止后人在這上面無限浪費時間和生命,我打算把我在這上面浪費的一天一夜再回顧一下。

 

需要准備的工具:CMake for Windows 一份;zlib、libcurl、openssl 源代碼各一份。

我使用的版本:CMake 3.4.0、zlib 1.2.8、libcurl 7.45.0、openssl 1.0.2d、VC2015,我編譯的全是靜態庫。

 

首先,編譯zlib,打開CMake,把zlib目錄下的CMakeList.txt拖進去,然后生成解決方案。注意,這一步千萬不要用 contrib\vstudio 下的 sln,里面的坑無限多,打開vs,編譯zlib靜態庫。

然后,編譯OpenSSL,需要裝一個perl,32位的,接着切換進OpenSSL源碼的目錄,這里我也遇到一個坑,高版本的VS的MASM有問題,所以要禁用掉ASM代碼才能編譯通過:

  perl Configure VC-WIN32 no-asm --prefix:你想把庫裝到哪個目錄

  ms\do_nasm

  nmake -f ms\nt.mak -a

  nmake -f ms\nt.mak install(這里一定要注意install,不然OpenSSL那個頭文件內容是一堆垃圾)

 

接着,開始編譯libcurl:

  CMake 打開 libcurl 的 CMakeList.txt。

  Add Entry: 

    ZLIB_INCLUDE_DIR D:/developer/include/zlib
    ZLIB_LIBRARIES D:/developer/library/zlib
    OPENSSL_INCLUDE_DIR D:/developer/include
    OPENSSL_LIBRARIES D:/developer/library/openssl

  Configure,這里還有一個CMake的大坑。第一次Configure后,把Advanced勾上。

  SSL_EAY_RELEASE設置為 D:/developer/library/openssl/ssleay32.lib

  LIB_EAY_RELEASE設置為 D:/developer/library/openssl/libeay32.lib

  還有設置ZLIB里面的內容,注意,如果不勾選Advanced,你設置的ZLIB選項是無效的(天坑啊!)。

 

  補充: 另外這里還有一個地方需要注意一下,Configure時,你要么用OpenSSL,要么可以用Windows SSPI,如果你用OpenSSL,在用CMake生成CURL的解決方案時,要把CURL_WINDOWS_SSPI這個選項的鈎給去掉(要出現這個選項,需要勾選CMake的Advanced),否則會出現結構重定義的問題,如果你不使用OpenSSL,不傳OPENSSL_INCLUDE和OPENSSL_LIBRARIES進去就好,然后把CMake里那個CMAKE_USE_OPENSSL的鈎取消掉,不過前提是你是在編譯Windows用的libcurl。

 

  到這里就結束了,再次Configure,生成curl解決方案后,就開vs狂編譯吧。

 

  如果您按照我的方法編譯成功了,希望您能留下一條評論,我會得到巨大的鼓勵。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM