【问题标题】:Use libcurl undefined reference to 'curl_easy_init'使用 libcurl 未定义的对 'curl_easy_init' 的引用
【发布时间】:2015-03-25 18:35:50
【问题描述】:

使用libcurl 编写一些测试代码。尝试编译时,它说未定义的引用。已经使用-lcurl-L 编译选项。

root@ubuntu:~/work/test/curlTest# curl-config --libs
-L/usr/lib/x86_64-linux-gnu -lcurl
root@ubuntu:~/work/test/curlTest# gcc -L/usr/lib/x86_64-linux-gnu -lcurl curl.c -o curl
/tmp/ccnFnpaW.o: In function `main':
curl.c:(.text+0xb1): undefined reference to `curl_global_init'
curl.c:(.text+0xbc): undefined reference to `curl_easy_init'
curl.c:(.text+0x109): undefined reference to `curl_easy_setopt'
curl.c:(.text+0x136): undefined reference to `curl_easy_setopt'
curl.c:(.text+0x145): undefined reference to `curl_easy_perform'
collect2: error: ld returned 1 exit status

【问题讨论】:

  • 已经试过了,结果一样

标签: c linux gcc libcurl undefined-reference


【解决方案1】:

-lcurl 应该放在 gcc 命令的末尾。

gcc -L/usr/lib/x86_64-linux-gnu curl.c -o curl -lcurl

【讨论】:

  • 对我来说,只需将 -l 选项移到命令末尾就足够了
  • 太好了,它对我有用。但我仍然不知道为什么-lcurl 的位置很重要。为什么它在-o 之前失败但在-o 之后工作正常?
  • 这是因为 gcc linking 是顺序敏感的,你的 linked library 必须遵循依赖的东西。
猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2021-12-07
  • 1970-01-01
  • 2018-06-27
相关资源
最近更新 更多