gpt4 book ai didi

xcode - 在Xcode 4上 boost 库静态链接

转载 作者:行者123 更新时间:2023-12-04 18:12:55 25 4
gpt4 key购买 nike

我正在使用Xcode在OS X上使用Boost库。 Boost是使用macports安装在我的系统上的。通过将我需要的3个 boost 库(例如libboost_thread-mt.a)添加到“目标带库的二进制链接”列表中,我已经成功构建了我的应用程序。但是,我需要静态链接这些库,以便该应用程序可以在其他计算机上运行,​​而无需安装boost库。

我该怎么做呢?通过大量的Google搜索,我发现可能需要添加“-static”-在Xcode中的哪里添加?

最佳答案

如果您已经链接了.a库,那么您已经静态链接了。您无需交付.a库。它们只是一堆物体。

编辑:您的错误强烈表明您正在链接dylib而不是.a。如果您的库路径中包含libfoo.dyliblibfoo.a,即使您在Xcode中说“link libfoo.a”,即使libfoo.a在搜索路径中位于较早的位置,它仍将链接libfoo.dylib。这是因为Xcode的链接已完全断开,并将-lfoo传递给链接器(您切勿将-l用于所构建的内容并拥有确切的路径)。我总是建议在xcconfig文件中链接使用LDFLAGS构建的库,而不要使用构建 Pane 。您传递所需的确切路径,而不是使用-l。有关我对xcconfig的更多想法,请参见Abandoning the Build Panel。由于它是为Xcode3编写的,因此它已经过时了,但基础知识仍然适用。

使用构建 Pane ,还可以将整个路径传递到“其他链接器标志”中的库。但这仍然存在构建 Pane 的所有问题。

更快(但更不可靠)的解决方案有时是将-Wl,-search_paths_first添加到“其他链接器标志”。这会改变行为,以便在继续操作之前在每个库路径中同时搜索.dylib.a(默认行为是在各处搜索.dylib,然后才搜索.a)。因此,如果您的.a.dylib位于不同的目录中,并且该目录在搜索路径中位于较早的位置,那么它将起作用。

这个问题终于让我打开了radar,这是我几年前应该做的。我建议其他人打开duplicates

关于xcode - 在Xcode 4上 boost 库静态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9586991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com