1.安裝curl wget
tar -zxvf curl-7.26.0.tar.gz
cd curl-7.26.0
./configure --prefix=/usr/local/curl
make
make install
這裡需要root許可權
2.檢視當前已安裝的curl版本
curl -v
3.如果當前系統已經安裝舊版本的curl而不想覆蓋,或者沒有root許可權,可將curl安裝到本地目錄,即:修改prefix=後面的路徑為:/home/目標目錄。檢視本地目錄的版本需要進入目標目錄中的bin下,然後執行./curl -v。
4.在函式中呼叫curl並編譯的時候,預設將使用系統中已安裝的curl,如果想要使用本地目錄中的,需要進行標頭檔案和庫檔案的目錄設定,其中:設定標頭檔案為-i,設定庫檔案為-l,比如:
g++ test.cpp -lcurl -i /home/目標目錄/include/ -l /home/目標目錄/lib/
5.可將自己的程式和curl一起編譯成靜態庫/動態庫,供其他程式使用:
(1)生成靜態庫:
ar rcs libmylib.a mylib.o
(2)靜態庫的使用:
gcc -o test test.c -lmylib
(注:系統約定靜態庫以lib開頭,以.a結尾,而動態庫以.so結尾,因而編譯的時候不需要帶上字首和字尾。)
(3)生成動態庫:
gcc -fpic -o mylib.o -c mylib.c
gcc -shared -o libttt.so mylib.o
或者只執行一條語句
gcc -fpic -shared -o libttt.so mylib.c
(4)動態庫的使用:
gcc -o test test.c /usr/lib/libttt.so
(注:引用動態庫時,必須含有路徑,如果只是使用libttt.so,則必須確保這個庫所在目錄包括在path 環境變數中。)
6.呼叫編譯好的curl庫,執行程式的時候,可能會提示下面錯誤資訊:
error while loading shared libraries: libcurl.so.4: cannot open shared object file: no such file or directory
這種情況一般是由於沒有root許可權進行安裝,因而預設的庫查詢目錄下沒有相應檔案。
解決辦法:
(1)使用root許可權進行安裝。
(2)設定ld_library_path=dir(dir為libcurl.so.4的目錄),例如:export ld_library_path=/home/lib,可通過echo $ld_library_path檢查設定是否成功,此項設定在shell的當前會話中全域性生效。
(3)多個文章中提到可以使用gcc的-r或-rpath選項來在編譯時就指定庫的查詢路徑,並且該庫的路徑資訊儲存在可執行檔案中,執行時它會直接到該路徑查詢庫,避免了使用ld_library_path環境變數查詢,但是我所使用的系統中似乎不支援該選項。
g++編譯的時候使用-lcrypto -lidn -lssl -lrt /usr/lib/libcurl.a(意思是:前面四個使用動態鏈結,後面乙個使用靜態鏈結),假設g++生成的可執行程式名為curltest,則執行該語句:ldd curltest
如果仍然失敗的話,可重新編譯安裝libcurl,執行步驟1,但是在./configure的執行語句中需要新增:--disable-ldap --disable-ldaps,編譯好之後再進行鏈結即可。
Linux 安裝libcurl庫及初次編譯
進入解壓好的檔案 configure prefix pwd install 會在解壓檔案裡生成 install資料夾,裡面存放配置檔案 動態庫,標頭檔案等 makemake install前面3步執行完之後解壓的資料夾裡會出現 install資料夾編輯 測試 include include defi...
編譯libcurl日誌
中所述的 檔案已經消失。在中尋找發現乙個trash 進入後可以找到舊的檔案。解壓後,裡面沒有lib,也沒有原始碼,這是個什麼鬼。後來知道裡面的curl.exe是要用命令列來使用的。再試另乙個情況跟上乙個一樣,沒有有用的東西。想弄乙個不帶ssl的怎麼這麼難?算了,按照 所述的編譯乙個帶ssl的庫吧。還...
linux下編譯安裝libcurl 附使用示例
說明 在編譯任何開源 前可以先看看readme,install等檔案,會提供如何編 譯的資訊。在 此教程中通過閱讀readme和git info文 件可以得到很多編譯安裝資訊。在git info 中很明顯地說了執 行 buildconf產生configure配置檔案。所有不要在這裡 因為找不到con...