我正在尝试使用libcurl
,但无法正确设置它。在过去的几个小时中,我一直在阅读文档,但我感到困惑和迷茫。(这是我第一次使用带有C的外部库)
基于这些指示,我已经正确配置和安装libcurl
及curl-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)
因此,海湾合作委员会命令可以有适当的CFLAGS
和LDFLAGS
用于编译和链接反对libcurl
。
请注意,在使用shell(如bash)时,您将执行以下命令:
$ cmd1 arg1 arg2 $(cmd2 arg3)
shell将首先cmd arg3
通过执行它并使用stdout
输出cmd2
作为for的参数来求值cmd1
。比方说,cmd2 arg3
版画(上stdout
)hello
,然后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
is-I/usr/local/include
的输出和curl-config --libs
is的输出-L/usr/local/lib -lcurl
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句