gcc 不会在 OS X 的命令行上包含 libcurl
我正在尝试编译一个我一直在运行 OS X 的远程服务器上开发的 C 项目。该项目部分依赖于 libcurl。我只能通过我的管理员帐户远程访问该计算机。
当我尝试创建该项目时,我不断收到与 libcurl 函数和未定义常量相关的错误。我的结论是 libcurl 没有被编译器正确包含。
我正在使用 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
它也会失败。谁能帮助我阐明这个问题?
I'm trying to compile a C project I've been working on on a remote server that runs OS X. The project depends, in part, on libcurl. I only have access to the machine through my administrator account remotely.
When I attempt to make the project I keep getting errors relating to libcurl functions and constants not being defined. I conclude that libcurl is not being properly included by the compiler.
I'm using fink to install opensource software for all the dependencies ( postgres, curl, a few others ) and all the dependencies appear to work except curl.
My compiler command looks like:
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
If I make a test file like so:
/sw/bin/curl http://www.google.com/ --libcurl test.c
And then attempt to compile it with:
gcc test.c `/sw/bin/curl-config --cflags` `/sw/bin/curl-config --libs` -o test.o
It also fails. Can anyone help me shed some light on this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一个编译行是:
这将采用
Client.c
并生成Client.o
,一个目标文件。它不需要图书馆信息;由于-c
选项,没有发生链接。另一条编译行是:
可执行文件的名称通常以“
.o
”结尾;它会导致混乱。但是,如果test.c
仅引用标准库和 libcurl 中的函数,那么它应该“有效”。在我的 Mac 上,
/usr/bin
中有一个curl-config
的副本。尝试这个测试程序:
这是在 MacOS X 10.6.8 上。
One compilation line is:
This will take
Client.c
and generateClient.o
, an object file. It doesn't need the library information; there is no linking taking place because of the-c
option.The other compilation line is:
It is aconventional to end the names of executables with '
.o
'; it leads to confusion. However, iftest.c
only references functions from the standard libraries and libcurl, it should 'work'.On my Mac, there is a copy of
curl-config
in/usr/bin
.Try this test program:
This is on MacOS X 10.6.8.