在 Mac OS X 上,darwinssl 库的位置在哪里?

3
我正在尝试编译curl并将其静态链接到另一个项目。 我已经成功为我的Mac架构(x86_64)编译了它,并获得了“libcurl.a”。 现在当我尝试构建时:
#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

实际上,它似乎需要Foundation框架的功能。如果您将-framework CoreFoundation添加到gcc中会发生什么?编辑:如果它说它依赖于libz和Security,则尝试-lz -framework Security - rwols
它并没有产生差异。 - Draif Kroneg
考虑安装Macports并使用sudo port install curl。这将为您节省大量时间。 - trojanfoe
你尝试过交换-lz-framework Security的顺序吗?编辑:因此完整命令将是 g++ tornado.cc -std=c++11 -o tornado path/to/libcurl.a -framework Security -lz - rwols
重新排序没有帮助。 - Draif Kroneg
1个回答

6

我有些时间在Mac上瞎搞。这是对我有效的命令:

gcc main.cpp -I path/to/include path/to/libcurl.a -framework Foundation -lz -framework Security

基本上,您需要-framework Foundation-lz-framework Security

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接