我有一个使用 ProtocolBuffers (libprotobuf) 和 Boost 的 ASIO 库编写的简单程序。我确定我需要链接 libprotobuf.a 和 libboost_system.a,它们都位于我系统的/usr/local/lib 中。
按照在多个地方找到的说明,我已将这两个 .a 文件添加到“构建阶段”下的“链接二进制文件与库”列表中。两者都设置为“必需”。
当我构建时,这会生成一个链接器错误:
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。
最佳答案
感谢 yngum,到目前为止确定的最佳答案似乎是使用“库搜索路径”字段。考虑到这一点,“链接二进制文件与库”列表似乎不是完整路径列表,而是链接器稍后定位的库名称的基本列表。实际上,“Link Binary With Libraries”列表类似于 -l
选项,而“Library Search Paths”到 -L
选项通常传递给 ld
.
关于c++ - Xcode 静态库 - 路径异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603419/