在Linux上设置libcurl

ZM-

我正在尝试使用libcurl,但无法正确设置它。在过去的几个小时中,我一直在阅读文档,但我感到困惑和迷茫。(这是我第一次使用带有C的外部库)

基于这些指示,我已经正确配置和安装libcurlcurl-config一个最小的C程序,仅包含<curl/curl.h>编译;但是,当我运行任何示例程序(例如chkspeed.c)时,都会出现以下“未定义”错误。

/tmp/ccprXNBB.o:在函数main中:
chkspeed.c :(。text + 0x1bf):对curl_version的未定义引用
chkspeed.c :(。text + 0x408):对curl_global_init的未定义引用
chkspeed.c :(。text + 0x40d):未定义对`curl_easy_init'chkspeed.c 
:(。text + 0x432):未定义对` 
curl_easy_setopt'chkspeed.c :(。text + 0x454):未定义对'curl_easy_setopt'chkspeed的
引用c :(。text + 0x476):对'curl_easy_setopt'的未定义引用
chkspeed.c :(。text + 0x482):对'curl_easy_perform'的未定义引用
chkspeed.c :(。text + 0x4b0):对'curl_easy_getinfo'的未定义引用
chkspeed .c :(。text + 0x50b):未定义对`curl_easy_getinfo'chkspeed的引用
.c :(。text + 0x566):未定义对`curl_easy_getinfo'的引用
chkspeed.c :(。text + 0x5c9):对`curl_easy_getinfo'的未定义引用
chkspeed.c :(。text + 0x624):对'curl_easy_getinfo'的未定义引用
chkspeed.c :(。text + 0x66a):对'curl_easy_strerror'的未定义引用
chkspeed.c :(。text + 0x696):对`curl_easy_cleanup的未定义引用' 
chkspeed.c :(。text + 0x69b):对`curl_global_cleanup'的未定义引用
collect2:错误:ld返回了1退出状态

以下是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)

因此,海湾合作委员会命令可以有适当的CFLAGSLDFLAGS用于编译和链接反对libcurl

请注意,在使用shell(如bash)时,您将执行以下命令:

$ cmd1 arg1 arg2 $(cmd2 arg3)

shell将首先cmd arg3通过执行它并使用stdout输出cmd2作为for的参数来求值cmd1比方说,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 --cflagsis-I/usr/local/include的输出和curl-config --libsis的输出-L/usr/local/lib -lcurl

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章