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

标签 c macos command-line curl libcurl

我正在尝试编译一个我一直在运行 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/

相关文章:

c - 我如何在c中解释(断言)?

python - 操作系统 X : python ctypes global variables

php - 使用帐户获取/解析数据库数据

r - 升级到 Mac OS Catalina 后可能无法安装各种 R 软件包

intellij-idea - intellij idea 无法从终端打开当前目录

linux - 在 Mac OS X 中清理信号量

c - "Invalid argument"关于在 C 中使用 fcntl

c - 使用read()的程序进入死循环

汇编中的 Collat​​z 函数 - 段错误

command-line - 执行版本 :perform 时无法在命令行上覆盖 POM 属性