Xcode5上的libcurl链接器错误,但在Xcode 4.6上工作正常

时间:2013-10-10 11:36:18

标签: ios objective-c xcode llvm libcurl

我有一个使用 libcurl.all.a 的项目。它在Xcode 4.6.3上构建,链接和运行完美。但是在Xcode5中,它会在未定义的符号上抛出链接器错误。错误日志如下。

  Undefined symbols for architecture i386:
  "_SSLCopyPeerCertificates", referenced from:
      _darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
  "_SSLDisposeContext", referenced from:
      _Curl_darwinssl_close in libcurl.all.a(libcurl_la-curl_darwinssl.o)
      _Curl_darwinssl_shutdown in libcurl.all.a(libcurl_la-curl_darwinssl.o)
      _darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
  "_SSLNewContext", referenced from:
      _darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
  "_SSLSetEnableCertVerify", referenced from:
      _darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
  "_SSLSetProtocolVersionEnabled", referenced from:
      _darwinssl_connect_common in libcurl.all.a(libcurl_la-curl_darwinssl.o)
  ld: symbol(s) not found for architecture i386
  clang: error: linker command failed with exit code 1 (use -v to see invocation)

SecurityFramework已经存在于项目中,并且我已将仅构建主动架构设置为否。由于它在Xcode 4.6.3中编译,我认为它与它没有任何关系缺少目标会员资格。

有什么方法可以解决这个问题吗?或者一个可能的解决方法,这个库使用Xcode5非常重要,因为它需要在iOS7应用程序中使用。

1 个答案:

答案 0 :(得分:0)

所以,我发布答案,以便它可能对任何可能面临类似情况的人有用。我能够从@deltheli和@sergio的评论中解决这个问题,非常感谢他们的帮助。

所以,我不得不跑     lipo -info 了解支持的体系结构,以及 发现armv7s和arm64不受支持,所以我尝试在armv7中编译它,失败并解释了为什么它在Xcode 4.6中完美运行而不是在5中的问题。我的libcurl已经过时了!我使用的版本不支持某些DarwinSSL符号。使用最新的版本修复了我的问题。