在Xcode 4上增强库静态链接

在Xcode 4上增强库静态链接,第1张

概述我正在使用 Xcode在OS X上使用Boost库.使用macports在我的系统上安装了Boost.我已经成功构建了我的应用程序,将我需要的3个boost库(例如,libboost_thread-mt.a)添加到Targets的Link Binary With Libraries列表中.但是,我需要静态链接这些库,以便应用程序可以在其他计算机上运行,​​而无需安装boost库. 我该怎么做?通过 我正在使用 Xcode在OS X上使用Boost库.使用macports在我的系统上安装了Boost.我已经成功构建了我的应用程序,将我需要的3个boost库(例如,libboost_thread-mt.a)添加到Targets的link Binary With librarIEs列表中.但是,我需要静态链接这些库,以便应用程序可以在其他计算机上运行,​​而无需安装boost库.

我该怎么做?通过我的众多谷歌搜索我发现我可能需要添加’-static’ – 我在Xcode中添加它?

解决方法 如果您已与.a库链接,那么您已经静态链接.你永远不需要发货.a库.它们只是一堆物体.

编辑:您的错误强烈建议您链接dylib而不是.a.如果你的库路径中有libfoo.dylib和libfoo.a,即使你在Xcode中说“link libfoo.a”,即使libfoo.a在搜索路径中较早,它仍然会链接libfoo.dylib.这是因为Xcode的链接完全被破坏并将-lfoo传递给链接器(你不应该为你构建的东西使用-l并且具有确切的路径).我总是建议将您在LDFLAGS中构建的库链接到xcconfig文件中,而不是使用构建窗格.您传递了所需的确切路径,而不是使用-l.有关xcconfig的更多想法,请参阅Abandoning the Build Panel.它现在已经过时了,因为它是为Xcode3编写的,但基础知识仍然适用.

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

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

这个问题终于让我在这个问题上开了一个radar,这是我几年前应该做的.我建议别人打开duplicates.

总结

以上是内存溢出为你收集整理的在Xcode 4上增强库静态链接全部内容,希望文章能够帮你解决在Xcode 4上增强库静态链接所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1025158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存