這兩天在調試代碼的時候,出現一些錯誤,發現是同時調用了兩份libcurl靜態庫引起的。需要重新編譯一份libcurl的動態庫。Windows版本的libcurl編譯過程相對來說,是比較痛苦的。主要在於編譯環境的搭建,如果環境搭建好了,速度還是很快的。本文檔將會在CSDN中開放,同時也會保存在公司內部使用,不涉及到公司信息保密問題。
1.libcurl的作用libcurl主要功能就是用不同的協議連接和溝通不同的伺服器~也就是相當封裝了的sockPHP 支持libcurl(允許你用不同的協議連接和溝通不同的伺服器)。, libcurl當前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 協議。libcurl同樣支持HTTPS證書授權,HTTP POST, HTTP PUT, FTP 上傳(當然你也可以使用PHP的ftp擴展), HTTP基本表單上傳,代理,cookies,和用戶認證。2.OpenSSLOpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。3.為什麼libcurl需要OpenSSLlibcurl為了實現HTTPS需要OpenSSL提供支持,在進行編譯libcurl之前,最好是編譯好OpenSSL。
4.環境搭建(1)安裝Perl程序
openssl編譯 Configure的時候,使用到perl程序,在window 下比較流行當仁不讓就是 activeperl
http://dl.softmgr.qq.com/original/Development/ActivePerl-5.16.3.1604-MSWin32-x64-298023.msi
安裝比較簡單,默認安裝就可以了,不要做其他操作。
(2)安裝NASM 彙編器
編譯可以使用vc++編譯器來編譯OpenSSL,使用彙編器編譯有更快的速度,本人使用彙編器是nasm。
http://www.nasm.us/pub/nasm/releasebuilds/2.11.05/win32/nasm-2.11.05-installer.exe
本人安裝是VS2005開發環境, OpenSSL需要使用Visual Studio 命令行方式編譯。
1) 點擊 開始->所有程序->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 命令提示(2005)
2)再打開編譯窗口,將上面安裝NASM的路徑添加到PATH環境變量裡 PATH=%PATH%;」c:\Program Files (x86)\nasm」
3)進入OpenSSL的工作目錄 D:\Code\sdkdev\LCLibcurl\Trunk\openssl-1.0.2h
6.libcurl編譯:
ibcurl編譯:
debug版本:編譯靜態庫
編譯平臺選擇 DLL Debug - DLL OpenSSL
D:\Code\sdkdev\LCLibcurl\Trunk\curl-7.37.0\curl-7.37.0\projects\Windows\VC8
curl-7.37.0 ->projects -> Windows -> VC8 -> curl。sln,使用vs2005進行編譯。
將 libcurl 設為啟動項目,選擇 libcurl -> Resource Files -> libcurl.rc,右鍵「移出」,它記錄著版本信息,只會增大文件,可以移出掉。
選擇 屬性 -> C/C++ -> 預處理器 -> 預處理器定義,將」BUILDING_LIBCURL」改成」CURL_STATICLIB」。這樣那些接口函數就不會被聲明為導出函數了。
選擇 屬性 -> 連結器 -> 常規 -> 附加庫目錄 添加 ……..\lib\openssl,指向curl-7.37.0 -> lib -> openssl
選擇 屬性 -> 連結器 -> 輸入 -> 附加依賴項 添加 libeay32.lib;ssleay32.lib;ws2_32.lib;wldap32.lib; 前兩個是為了OpenSSL,後兩個是CURL必須依賴的。
在編譯成功後 curl-7.37.0 -> build -> Win32 -> VC8 -> DLL Debug - DLL OpenSSL 文件夾中會生成有 libcurld.dll 和 libcurld.lib(注意名字不是libcurl)。
release 版本編譯動態庫
編譯平臺選擇 DLL Debug - DLL OpenSSL
D:\Code\sdkdev\LCLibcurl\Trunk\curl-7.37.0\curl-7.37.0\projects\Windows\VC8
curl-7.37.0 ->projects -> Windows -> VC8 -> curl。sln,使用vs2005進行編譯。
將 libcurl 設為啟動項目,選擇 libcurl -> Resource Files -> libcurl.rc,右鍵「移出」,它記錄著版本信息,只會增大文件,可以移出掉。
選擇 屬性 -> C/C++ -> 預處理器 -> 預處理器定義,BUILDING_LIBCURL不需要更改。
選擇 屬性 -> 連結器 -> 常規 -> 附加庫目錄 添加 ……..\lib\openssl,指向curl-7.37.0 -> lib -> openssl
選擇 屬性 -> 連結器 -> 輸入 -> 附加依賴項 添加 libeay32.lib;ssleay32.lib;ws2_32.lib;wldap32.lib; 前兩個是為了OpenSSL,後兩個是CURL必須依賴的。
在編譯成功後 curl-7.37.0 -> build -> Win32 -> VC8 -> DLL Release- DLL OpenSSL 文件夾中會生成有 libcurl.dll 和 libcurl.lib。編譯成功之後,會保存在D:\Code\sdkdev\LCLibcurl\Trunk\curl-7.37.0\curl-7.37.0\build\Win32\VC8\DLL Release