gpt4 book ai didi

c - gcc 不会在 OS X 的命令行上包含 libcurl

转载 作者:行者123 更新时间:2023-11-30 14:28:04 24 4
gpt4 key购买 nike

我正在尝试编译一个我一直在运行 OS X 的远程服务器上开发的 C 项目。该项目部分依赖于 libcurl。我只能通过我的管理员帐户远程访问该计算机。

当我尝试创建该项目时,我不断收到与未定义 libcurl 函数和常量相关的错误。我的结论是 libcurl 没有被编译器正确包含。<​​/p>

我正在使用 fink 为所有依赖项(postgres、curl 和其他一些)安装开源软件,并且除curl 之外的所有依赖项似乎都可以工作。

我的编译器命令如下所示:

gcc -ggdb -ansi -Wall -D_GNU_SOURCE -L `/sw/bin/pg_config --libdir` `/sw/bin/curl-config --cflags` -I `/sw/bin/pg_config --includedir` -lpq -lcurl -lpthread -lm `/sw/bin/curl-config --libs` -c Client.c

如果我制作一个像这样的测试文件:

/sw/bin/curl http://www.google.com/ --libcurl test.c

然后尝试编译它:

gcc test.c `/sw/bin/curl-config --cflags` `/sw/bin/curl-config --libs` -o test.o

它也失败了。谁能帮我解释一下这个问题?

最佳答案

一个编译行是:

gcc -ggdb -ansi -Wall -D_GNU_SOURCE -L `/sw/bin/pg_config --libdir` \
`/sw/bin/curl-config --cflags` -I `/sw/bin/pg_config --includedir` \
-lpq -lcurl -lpthread -lm `/sw/bin/curl-config --libs` -c Client.c

这将获取Client.c并生成Client.o,一个目标文件。它不需要图书馆信息;由于 -c 选项,没有发生链接。

另一个编译行是:

gcc test.c `/sw/bin/curl-config --cflags` `/sw/bin/curl-config --libs` -o test.o

按照惯例,可执行文件的名称以“.o”结尾;它会导致困惑。但是,如果 test.c 仅引用标准库和 libcurl 中的函数,那么它应该可以“工作”。

在我的 Mac 上,/usr/bin 中有一个 curl-config 的副本。

<小时/>

尝试这个测试程序:

$ cat curltest.c
#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
if (curl_global_init(0) == CURLE_OK)
{
printf("CURL version %s\n", curl_version());
curl_global_cleanup();
}
else
fprintf(stderr, "Failed to initialize CURL\n");

return 0;
}
$ cc -o curltest $(curl-config --cflags) curltest.c $(curl-config --libs)
$ file curltest
curltest: Mach-O 64-bit executable x86_64
$ otool -L curltest
curltest:
/usr/lib/libcurl.4.dylib (compatibility version 6.0.0, current version 6.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
$ curltest
CURL version libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3
$

这是在 MacOS X 10.6.8 上。

关于c - gcc 不会在 OS X 的命令行上包含 libcurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com