Xcode静态库 - 路径奇怪

时间:2013-10-26 05:55:51

标签: c++ xcode boost linker static-libraries

我有一个简单的程序,我正在使用ProtocolBuffers(libprotobuf)和Boost的ASIO库编写。我已经确定我需要链接libprotobuf.a和libboost_system.a,它们都位于我的系统上的/ usr / local / lib中。

按照几个地方的说明,我已将这两个.a文件添加到“建立阶段”下的“Link Binary With Libraries”列表中。两者都设置为“必需”。

构建时,会生成链接器错误:

ld: library not found for -lprotobuf

如果我将以下内容(作为两个单独的行)添加到“Build Settings”/“Other Linker Flags”,则问题就会消失:“ - L”,“/ usr / local / lib”。

我的问题是这个-L hack设置库搜索路径是否真的是正确的方法。考虑到我已经将它们添加到“Build Phases”/“Link Binary With Libraries”列表中,我不确定为什么Xcode没有找到这些库的位置。我原以为他们在这个列表中的存在就足以让Xcode知道如何找到它们。这两个.a文件现在也显示在我项目的文件“树”中。

那么有没有比看似滥用“其他链接器标志”设置更好的方法呢?

我正在使用Xcode 4.6.3。

1 个答案:

答案 0 :(得分:1)

感谢yngum,目前确定的最佳答案是使用“图书馆搜索路径”字段。考虑到这一点,“Link Binary With Libraries”列表似乎不是完整路径列表,而是链接器稍后定位的库名称的基本列表。实际上,“使用库链接二进制文件”列表类似于-l选项,而“{1}}选项的”库搜索路径“通常传递给-L