0

我在 Mac 上收到了一个旧代码并尝试在 OS X 10.6 上编译它,在代码中很少调用 OpenSSL 库(例如 SSL_write())我在这些文件中添加了标题(#include)并检查了我的OpenSSL 的版本向我显示“0.9.8r”(我知道 Apple 有它自己的这个库 crypto' 框架)但是为什么我得到链接错误是这样的:

  sockets::TcpSocket::TryWrite(char const*, unsigned long) in TcpSocket.o

我知道代码应该针对这个库编译,/usr/lib但它没有,我是否缺少 Xcode 中的路径或其他设置?

4

1 回答 1

1

/usr/bin 中没有库。我假设你的意思是/usr/lib。但是,您通常不会针对 /usr/lib 进行编译。您通常针对特定的 SDK 进行编译,该 SDK 有自己的 /usr/lib 和 /usr/include 副本。你使用的SDK头文件一般是在-isysroot参数中传入的。如果你在 Xcode 中构建,这些设置主要是通过“Base SDK”和“OS X Deployment Target”设置的。不过,如果没有更多关于你如何构建的细节,我不确定还能指点你哪里。特别是,相关文件的编译和链接行是什么样的?


在 Xcode 中,不要尝试通过路径链接特定的系统库。您应该始终使用构建设置的“链接阶段”面板链接到系统库,并从 SDK 库列表中进行选择。在“链接阶段”面板中选择特定路径几乎总是会导致问题。

于 2012-10-24T00:47:34.113 回答