# 1. 下載解壓 wget https://curl.se/download/curl-8.5.0.tar.gz tar -xzf curl-8.5.0.tar.gz && cd curl-8.5.0 # 2. 配置安裝前綴 ./configure --prefix=/usr/local/curl # 3. 編譯安裝 make -j$(nproc) && make install
gcc -Wall -o curltest curltest.c -lcurl # 若安裝在非標準路徑 gcc -I/usr/local/curl/include -L/usr/local/curl/lib -lcurl -o curltest curltest.c
缺少 -lcurl 會報 undefined reference to 'curl_easy_init' 等鏈接錯誤。
#include <curl/curl.h>
#include <stdio.h>
int main() {
CURL *curl = curl_easy_init();
if (!curl) return 1;
curl_easy_setopt(curl, CURLOPT_URL, "https://httpbin.org/get");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK)
fprintf(stderr, "curl failed: %s\n", curl_easy_strerror(res));
curl_easy_cleanup(curl);
return 0;
}
curl_easy_init() → 獲取 easy handlecurl_easy_setopt() → 設置 URL、回調、Header、超時、代理等curl_easy_perform() → 執行請求(阻塞)curl_easy_cleanup() → 釋放 handlecurl_global_init() / curl_global_cleanup()(可選,易函數自動調用)CURLOPT_WRITEFUNCTION:接收 body 數據,簽名 size_t cb(char *ptr, size_t size, size_t nmemb, void *userdata)CURLOPT_HEADERFUNCTION:接收 HeaderCURLOPT_READFUNCTION:上傳數據讀取--with-openssl。curl_global_init。CURLOPT_NOPROGRESS=0 + CURLOPT_PROGRESSFUNCTION 顯示進度。CURLOPT_TIMEOUT(整個請求)、CURLOPT_CONNECTTIMEOUT(連接階段)。