我在Mac上收到一个旧代码并试图在OS X 10.6上编译它,在代码中几乎没有对OpenSSL库的调用(例如SSL_write())我在这些文件中添加了头文件(#include)并检查我的OpenSSL版本向我显示“0.9.8r”(我知道Apple有自己的这个库加密框架'),但为什么我得到链接错误:
sockets::TcpSocket::TryWrite(char const*, unsigned long) in TcpSocket.o
我知道代码应该在/usr/lib
中对这个库进行编译,但它没有,我是否缺少Xcode中的路径或其他设置?
答案 0 :(得分:1)
/ usr / bin中没有库。我假设你的意思是/ usr / lib。但是,您通常不会针对/ usr / lib进行编译。您通常针对特定的SDK进行编译,该SDK具有自己的/ usr / lib和/ usr / include副本。您使用的SDK头文件通常在-isysroot
参数中传递。如果您使用Xcode构建,则主要通过“Base SDK”和“OS X部署目标”设置这些设置。如果没有关于你如何建设的具体细节,我不确定在哪里可以指出你。特别是,相关文件的编译和链接行是什么样的?
在Xcode中,不要尝试按路径链接特定的系统库。您应该始终使用构建设置的“链接阶段”面板链接系统库,并从SDK的库列表中进行选择。在“链接阶段”面板中选择特定路径几乎总会导致问题。