Xcode 4 上的 Boost 库静态链接

2024-05-07

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

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


如果您已链接到.a库,那么你已经静态链接了。您永远不需要运送.a图书馆。它们只是一堆物体。


EDIT:您的错误强烈表明您正在链接 dylib 而不是 .a。如果你有libfoo.dylib and libfoo.a在你的库路径中,即使你说“链接libfoo.a“ 在 Xcode 中,即使libfoo.a在搜索路径的较早位置,它仍然会链接libfoo.dylib。这是因为 Xcode 的链接完全损坏并通过-lfoo到链接器(你不应该使用-l对于你构建的东西并且有确切的路径)。我总是建议链接您内置的库LDFLAGS在 xcconfig 文件中而不是使用构建窗格。您传递您想要的确切路径而不是使用-l. See 放弃构建面板 http://robnapier.net/blog/build-system-1-build-panel-360了解更多我对 xcconfig 的想法。它现在已经过时了,因为它是为 Xcode3 编写的,但基础知识仍然适用。

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

更快(但不太稳健)的解决方案有时是添加-Wl,-search_paths_first到“其他链接器标志”。这改变了行为,以便每个库路径都被搜索.dylib and .a在继续之前(默认行为是到处搜索.dylib然后才搜索.a)。所以如果你的.a与您的目录位于不同的目录中.dylib,并且该目录位于搜索路径的较早位置,这将起作用。

这个问题终于让我开了一个radar http://openradar.appspot.com/radar?id=1580401在这方面,我几年前就应该这样做。我建议其他人打开重复项 http://blackpixel.com/blog/1558/radar-or-gtfo/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode 4 上的 Boost 库静态链接 的相关文章

随机推荐

  • 如何使用 python 将 .docx 文件转换为 html?

    import mammoth f open D filename docx rb document mammoth convert to html f 当我运行此代码时 我无法获取 html 文件 请帮助我获取它 当我转换为 html 文件
  • django自定义模板标签中的访问请求

    我在 myapp extras py 中的代码 from django import template register template Library register inclusion tag new userinfo html d
  • 如何创建链接以打开 Web 部件中的工具部件

    我有一个自定义 Web 部件 当它首次呈现时 我想提供打开修改共享 Web 部件属性的链接 就像我们打开 OOB Web 部件 如内容编辑器或 XML Web 部件 时通常得到的那样 任何人对此都有想法 我正在使用它 但是当我单击它时 它显
  • 错误:外线构造函数不能有模板参数 C++

    我有一些代码看起来像这样Array hpp file template
  • CakePHP 验证错误消息

    我正在尝试修改 CakePHP 显示错误消息的方式 下面是用于显示错误的通用模板 div class error message Please enter at least 3 characters div 我想像下面这样设置错误的样式
  • 动态数据表在asp.net中采用相反的顺序

    在我的网络应用程序中 我创建了 DataTable dt new DataTable dt Columns Add Month 并用日期填充列名 月 Month Column name oct 2014 July 2016 Aug 2016
  • PyDev 无法再调试

    我正在使用 eclipse 4 2 1 和 pydev 2 7 1 以前是 2 6 0 一切都工作正常 直到调试器突然停止工作 它打印 pydev debugger 开始 然后根本不运行程序 而是挂起 根据我在其他问题报告中找到的一些信息
  • 如何避免将相同的片段添加到堆栈中

    我需要一些帮助 他们以这种方式将片段添加到活动中 问题是每次调用 openFragment 时都会创建片段并添加 这是显而易见的 问题 我做了什么修改 这样它只能添加一次片段 在下次使用相同片段标签的调用时 它将什么也不做 案例 第一次按下
  • Delphi - 将字符串从 UTF-8 转换回来

    我在将 UTF 8 编码字符串转换回 delphi 可用的字符串时遇到问题 该应用程序是用 XE8 编写的 并部署在 Windows 和 OSX 上 该应用程序分别在 Windows 和 OSX 上使用 LimeLM API dll 和 d
  • 使用 JavaScript 或 jQuery 设置文本框的最大长度

    我想用 JavaScript 或 jQuery 更改文本框的最大长度 我尝试了以下方法 但似乎没有帮助 var a document getElementsByTagName input for var i 0 i
  • Windows批处理支持异常处理吗?

    Windows批处理编程支持异常处理吗 如果没有 是否有任何方法可以有效地模拟批处理文件中的异常处理 我希望能够在批处理脚本中的任何 CALL 级别的任何位置 抛出异常 并重复弹出 CALL 堆栈 直到找到活动的 TRY 块 然后 CATC
  • 在 WPF 中设置控件内容比将类绑定到选择器控件更好的方法是什么?

    我有一个分为 4 个面板的应用程序 有一个主绘图区域 一个顶部面板 一个左侧菜单面板和一个右侧子菜单面板 如下图所示 子菜单的内容由选择哪个顶部菜单按钮决定 子菜单的内容由选择哪个右侧菜单决定 例如 这是单击 网络设计和测试 扩展器上的第一
  • 如何以编程方式指定 MATLAB 编辑器键绑定

    我想将键盘键绑定设置为Windows 默认设置我想在启动时使用startup m因为我希望在大量系统上设置此设置 首选项对话框中的等效设置是 MATLAB gt Keyboard gt Shortcuts gt Active Setting
  • 合并分支时,Git 不显示已删除行的当前/传入更改

    我正在尝试了解有关 git 分支 合并的更多信息 一直以来只使用 master 分支 我分支两次 然后执行合并 为什么 git 只显示新的冲突行 我想知道为什么删除 熊 根本没有突出显示为更改 您已经在评论中介绍了其中的一些内容 但让我们把
  • 由于 __init__ 构造函数而产生的 Pytest 集合警告

    我一直在使用 Pytest 和 Selenium Web 驱动程序自学测试自动化 我所有的测试函数都在一个名为测试网络 py 它位于名为的目录中tests 我将所有函数分开 并将它们放在一个名为的单独目录中的自己的文件中测试用例 例如 这就
  • JS:按每个类别的最大值过滤对象数组

    什么是最有效 优雅的方式来实现类似sql的过滤效果 我想过滤它们并只获取某个组中最大值的对象 这是我的代码 它可以工作 但可能不是最好的方法 uniqueValues arr gt new Set arr getMaxTimeOf arr
  • 通过使用 Intents 使用预装的 Google 地图而不是自己的 Activity?

    我只是想知道是否可以将地理坐标传递给谷歌地图应用程序之二意图或类似的东西 我自己编写了一个用于显示路线 坐标等的应用程序 但是让谷歌地图本身显示这些不是更优雅吗 我不知道这是否可能 但也许你们中的一个人可以回答这个问题 如果这是可能的 是否
  • R模糊字符串匹配根据匹配的字符串返回特定列

    我有两个大型数据集 一个大约有 50 万条记录 另一个大约有 7 万条记录 这些数据集有地址 我想匹配较小数据集中的任何地址是否存在于大数据集中 正如您所想象的那样 地址可以用不同的方式和不同的情况 拼写等来书写 此外 如果只写到建筑物级别
  • Swift 2.0 中的 countForFetchRequest

    我正在尝试使用countForFetchRequestSwift 2 0 中托管对象上下文上的方法 我注意到错误处理executeFetchRequest已更改为新的do try catch syntax func executeFetch
  • Xcode 4 上的 Boost 库静态链接

    我在 OS X 上使用 Xcode 使用 Boost 库 Boost 使用 macports 安装在我的系统上 通过将我需要的 3 个 boost 库 例如 libboost thread mt a 添加到 Targets Link Bin