linux下編譯安裝libcurl(附使用示例)
qianghaohao(Xqiang)
說明:在編譯任何開源代碼前可以先看看README, INSTALL等文件,會提供如何編譯的信息。在
此教程中通過閱讀README和GIT-INFO文件可以得到很多編譯安裝信息。在GIT-INFO中很明顯地說了執(zhí)
行:./buildconf產(chǎn)生configure配置文件。所有不要在這里因為找不到configure文件而懵逼。
1.下載libcurl源碼:
git clone https://github.com/curl/curl.git
2.進(jìn)入curl工程目錄執(zhí)行./buidconf產(chǎn)生configure配置文件:
3.執(zhí)行產(chǎn)生的configure腳本:
./configure --enable-debug 在這里我只加了這個參數(shù),為了后續(xù)的調(diào)試,
如果還要其他參數(shù),可以./configure --help查看其他可選參數(shù)。
注:我是默認(rèn)安裝openssl的,所已沒有出現(xiàn)找不到openssl庫的問題。
如果遇到了就裝一個,選擇默認(rèn)安裝省事,自己指定安裝目錄比較麻煩,還
要給configure多加個參數(shù)。具體查看工程目錄下的README。
4.make
5.make install 默認(rèn)庫文件安裝在/usr/local/lib 頭文件安裝在/usr/local/include --->安裝要root權(quán)限
6.到/usr/local/lib/即可查看到安裝好的庫文件:
7.接下來寫個測試代碼來使用libcurl庫(此測試代碼下載指定URL的頁面):
測試代碼如下:
- // 采用CURLOPT_WRITEFUNCTION 實現(xiàn)網(wǎng)頁下載保存功能
- #include <stdio.h>;
- #include <stdlib.h>;
- #include <unistd.h>;
-
- #include <curl/curl.h>;
- #include <curl/types.h>;
- #include <curl/easy.h>;
-
- FILE *fp; //定義FILE類型指針
- //這個函數(shù)是為了符合CURLOPT_WRITEFUNCTION而構(gòu)造的
- //完成數(shù)據(jù)保存功能
- size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
- {
- int written = fwrite(ptr, size, nmemb, (FILE *)fp);
- return written;
- }
-
- int main(int argc, char *argv[])
- {
- CURL *curl;
- if (argc != 3)
- {
- fprintf(stderr, "usage: %s url filename\n", argv[0]);
- exit(-1);
- }
- curl_global_init(CURL_GLOBAL_ALL);
- curl = curl_easy_init();
- curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
-
- if((fp = fopen(argv[2],"w")) == NULL)
- {
- curl_easy_cleanup(curl);
- exit(1);
- }
- //CURLOPT_WRITEFUNCTION 將后繼的動作交給write_data函數(shù)處理
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
- curl_easy_perform(curl);
- curl_easy_cleanup(curl);
- exit(0);
- }
8.curl-config工具簡介: 在安裝完libcurl庫后會同時安裝了curl-config工具,這個工具專門用來查看已安裝libcurl的
一些信息。有很多參數(shù):
curl-config --libs 查看我們的代碼鏈接libcurl時需要哪些參數(shù),這個選項我們用的比較多
curl-config --version 查看libcurl版本
還有更多參數(shù),不一一列舉了,curl-config --help查看更多參數(shù)。
9.編譯鏈接我們的測試代碼:
10.編譯完成,下載百度首頁:
總結(jié):
通過源碼編譯安裝程序,看README很重要,而不是盲目的按那老套路編譯安裝,很多時候按老套路是行不通的,
其次,在我們遇到問題了可以直接把錯誤提示粘到Chrome瀏覽器搜索欄搜索,一般在英文論壇都有很好的解決方法,很