首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

libcurl C 語言開發入門:安裝、編譯鏈接、易錯點與基礎 GET 請求示例

     編輯:關於C語言

安裝步驟(源碼編譯)

# 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

編譯鏈接關鍵:-lcurl

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' 等鏈接錯誤。

最簡 GET 請求代碼

#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;
}

核心 API 流程

  1. curl_easy_init() → 獲取 easy handle
  2. curl_easy_setopt() → 設置 URL、回調、Header、超時、代理等
  3. curl_easy_perform() → 執行請求(阻塞)
  4. curl_easy_cleanup() → 釋放 handle
  5. 全局:curl_global_init() / curl_global_cleanup()(可選,易函數自動調用)

常見回調函數

  • CURLOPT_WRITEFUNCTION:接收 body 數據,簽名 size_t cb(char *ptr, size_t size, size_t nmemb, void *userdata)
  • CURLOPT_HEADERFUNCTION:接收 Header
  • CURLOPT_READFUNCTION:上傳數據讀取

避坑清單

  • HTTPS 需 OpenSSL 支持,編譯 curl 時需 --with-openssl。
  • 多線程環境下每線程獨立 easy handle,共享 curl_global_init。
  • 大文件下載啟用 CURLOPT_NOPROGRESS=0 + CURLOPT_PROGRESSFUNCTION 顯示進度。
  • 超時設置:CURLOPT_TIMEOUT(整個請求)、CURLOPT_CONNECTTIMEOUT(連接階段)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved