2

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

按照在几个地方找到的说明,我已将这两个 .a 文件添加到“构建阶段”下的“使用库链接二进制文件”列表中。两者都设置为“必需”。

当我构建时,这会产生一个链接器错误:

ld: library not found for -lprotobuf

如果我将以下内容(作为两个单独的行)添加到“构建设置”/“其他链接器标志”,那么问题就会消失:“-L”、“/usr/local/lib”。

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

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

我正在使用 Xcode 4.6.3。

4

1 回答 1

1

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

于 2013-10-28T00:50:56.440 回答