我正在尝试编译curl并将其静态链接到另一个项目。
我已经成功为我的Mac架构(x86_64)编译了它,并获得了“libcurl.a”。
现在当我尝试构建时:
我理解为想要获取darwinssl的链接,但我不知道在哪里获取。
curl的自述文件(https://github.com/biasedbit/curl-ios-build-scripts/blob/master/README.md)提到它依赖于libz.dylib和Security.framework,但没有提供任何关于它们是什么、何时以及如何需要它们以及如何包含它们的线索。
附注:常规的curl包含工作正常:
#include <curl/curl.h>
int main()
{
CURL *curl = curl_easy_init();
}
使用 g++ tornado.cc -o tornado (libcurl.a 的路径) -std=c++11 进行编译。
我得到的结果是:
Undefined symbols for architecture x86_64:
"_CFArrayAppendValue", referenced from:
_append_cert_to_array in libcurl.a(libcurl_la-darwinssl.o)
"_CFArrayCreate", referenced from:
_darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o)
"_CFArrayCreateMutable", referenced from:
_darwinssl_connect_step2 in libcurl.a(libcurl_la-darwinssl.o)
"_CFArrayGetCount", referenced from:
_darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o)
"_CFArrayGetValueAtIndex", referenced from:
_darwinssl_connect_common in libcurl.a(libcurl_la-darwinssl.o)
"_CFDataCreate", referenced from:
_append_cert_to_array in libcurl.a(libcurl_la-darwinssl.o)
我理解为想要获取darwinssl的链接,但我不知道在哪里获取。
curl的自述文件(https://github.com/biasedbit/curl-ios-build-scripts/blob/master/README.md)提到它依赖于libz.dylib和Security.framework,但没有提供任何关于它们是什么、何时以及如何需要它们以及如何包含它们的线索。
附注:常规的curl包含工作正常:
g++ tornado.cc -o tornado -lcurl -std=c++11
-framework CoreFoundation
添加到gcc
中会发生什么?编辑:如果它说它依赖于libz和Security,则尝试-lz -framework Security
。 - rwolssudo port install curl
。这将为您节省大量时间。 - trojanfoe-lz
和-framework Security
的顺序吗?编辑:因此完整命令将是g++ tornado.cc -std=c++11 -o tornado path/to/libcurl.a -framework Security -lz
。 - rwols