簡體   English   中英

在 Linux 上設置 libcurl

[英]Setting up libcurl on Linux

我正在嘗試使用libcurl ,但未能正確設置。 過去幾個小時我一直在閱讀文檔,但我感到困惑和迷茫。 (這是我第一次使用帶有 C 的外部庫)

根據這些說明,我已經正確配置並安裝了libcurlcurl-config 一個只包含<curl/curl.h>編譯的最小 C 程序; 但是,當我運行任何示例程序(例如chkspeed.c )時,我會收到以下“未定義”錯誤。

/tmp/ccprXNBB.o: In function `main':
chkspeed.c:(.text+0x1bf): undefined reference to `curl_version'
chkspeed.c:(.text+0x408): undefined reference to `curl_global_init'
chkspeed.c:(.text+0x40d): undefined reference to `curl_easy_init'
chkspeed.c:(.text+0x432): undefined reference to `curl_easy_setopt'
chkspeed.c:(.text+0x454): undefined reference to `curl_easy_setopt'
chkspeed.c:(.text+0x476): undefined reference to `curl_easy_setopt'
chkspeed.c:(.text+0x482): undefined reference to `curl_easy_perform'
chkspeed.c:(.text+0x4b0): undefined reference to `curl_easy_getinfo'
chkspeed.c:(.text+0x50b): undefined reference to `curl_easy_getinfo'
chkspeed.c:(.text+0x566): undefined reference to `curl_easy_getinfo'
chkspeed.c:(.text+0x5c9): undefined reference to `curl_easy_getinfo'
chkspeed.c:(.text+0x624): undefined reference to `curl_easy_getinfo'
chkspeed.c:(.text+0x66a): undefined reference to `curl_easy_strerror'
chkspeed.c:(.text+0x696): undefined reference to `curl_easy_cleanup'
chkspeed.c:(.text+0x69b): undefined reference to `curl_global_cleanup'
collect2: error: ld returned 1 exit status

以下是我對本指南中的三個curl-config標志的輸出。 我不確定如何使用這些信息:

$: curl-config --cflags
-I/usr/local/include
$: curl-config --libs
-L/usr/local/lib -lcurl
$: curl-config --feature
IPv6
UnixSockets
libz
AsynchDNS

如果不能解決問題,我將非常感謝任何可能使我朝着正確方向前進的幫助。 感謝您的時間!

你應該像這樣編譯它:

$ gcc chkspeed.c -o chkspeed $(curl-config --cflags) $(curl-config --libs)

以便 gcc 命令可以具有適當的CFLAGSLDFLAGS用於編譯和鏈接libcurl

請注意,在使用 shell(如 bash)並執行如下命令時:

$ cmd1 arg1 arg2 $(cmd2 arg3)

shell 將通過執行它並使用cmd2stdout輸出作為cmd1的參數來評估第一個cmd arg3 假設cmd2 arg3打印(在stdouthello ,那么 shell 將執行cmd1 arg1 arg2 hello

所以

$ gcc chkspeed.c -o chkspeed $(curl-config --cflags) $(curl-config --libs)

將被執行為

$ gcc chkspeed.c -o chkspeed -I/usr/local/include -L/usr/local/lib -lcurl

因為curl-config --cflags的輸出是-I/usr/local/includecurl-config --libs的輸出是-L/usr/local/lib -lcurl

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM