链接静态库时避免链接未使用的符号

2023-12-07

我正在使用苹果海湾合作委员会编译一个我要重新分发的 dylib。由于各种原因我正在使用一些库,比方说libz为了保持简单。

由于这个库通常在 Mac 系统上找不到,我希望静态链接在通过将路径传递给 dylib 使用符号.a-file以简化部署。

现在,链接器链接到all尽管我只引用了一个子集,但将 lib 中的符号放入生成的 dylib 中。在linux上我从未遇到过这个问题,链接器很高兴地丢弃所有未引用的符号并创建一个非常小的可执行文件,所以它应该是possible。我现在拥有的 dylib 文件比应有的大 10 倍。

我尝试摆弄 -dead_code 链接器标志,但无济于事。也许我只是不明白?

有谁知道这个问题的解决办法吗?


Try -Wl,--gc-sections.

至于-dead_strip(你可能的意思是-dead_code):

打开-dead_strip之前 您的项目首先必须选择 被“移植”以处理死代码 剥离。这将包括改变 从 -gused (-g 的默认值)到 -gfull 并重新编译链接到您的所有对象文件 使用新编译器进行编程 Mac OS X 2004 年 6 月发布。还如果 您构建了一个加载的可执行文件 插件,它使用来自 可执行文件,你必须确保 插件使用的符号不是 剥离(通过使用属性((使用))或 -exported_symbols_list 选项)。如果您正在使用导出列表并构建 共享库或可执行文件 将与 ld(1) 一起使用 -bundle_loader 标志,您需要包含异常符号 导出列表中的帧信息 用于导出的 C++ 符号。这些 符号以.eh结尾,可以看到 使用 nm(1) 工具。

and:

启用死代码剥离 命令行,传递 -dead_strip ld 的选项。您还应该通过 GCC 的 -gfull 选项可生成完整的调试符号集 你的代码。链接器使用这个额外的 调试信息到dead strip 可执行文件。

希望这可以帮助。

All content in this answer was located within the first few Google search results for "apple ld static link unused symbols". :)

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

链接静态库时避免链接未使用的符号 的相关文章

随机推荐

  • 动态更改自动布局

    我必须显示 3 个标签 例如 标签1 标签2 标签3 Horizontally 我想要这 3 个标签的宽度是根据屏幕尺寸宽度均分 如何直接使用 nib 文件实现此目的 Thanks 问题2 标签1 标签2 标签3 所有标签宽度相等 所有La
  • 找不到引用的源:包

    我有这个 pubspec yaml name Dart Pages description The Dart platform dependencies web components any mongo dart any 然后我运行 工具
  • 与计算机同步互联网时间

    所以我制作了一个具有许可证检查功能的程序 该程序仅适用于有限数量的受信任的人 所以我知道他们不会尝试篡改它 我想要做的是将计算机时钟与互联网时间 例如 time windows com 或任何受信任的时间 同步 如果计算机时钟与互联网不匹配
  • 有适用于 GIT 的 PHP api 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想知道是否有任何API或东西可以让php与GIT交互 我想在网页上打印有关分支 存储库等的信息 这可能吗 快速搜索就会找到一个 github 项目
  • 循环删除工作表

    您能告诉我为什么每隔一张工作表都会被删除 但是如果我关闭 worksheets delete 行 消息框中会显示所有工作表名称 Sub tor Dim wsz As Integer wsz Application Worksheets Co
  • TCL 数组最大大小

    我正在开发一个工程应用程序 界面是用TCL TK编写的 一切都很顺利 直到我需要使用一个 非常 大的数组 370 000 000 个元素 每个元素长度为 2 到 10 个字符 线性增长 我的问题是 TCL 阵列的大小限制在哪里 我一直在阅读
  • 使用基于注释的配置创建延迟初始化的 Spring bean

    我正在使用Spring的 Component注释来配置我的 Spring 3 0 应用程序中的许多 bean 我想知道是否可以懒惰地构建其中一些豆子 尤其是prototype beans 要声明延迟初始化的 bean 您可以使用 Lazy注
  • C++ 使用 for 循环反向打印字符串

    我有一个程序 使用 for 循环打印出字符串的字符 它还必须反向打印相同的字符 这就是我遇到问题的地方 有人可以帮我弄清楚为什么第二个 for 循环没有执行吗 int main string myAnimal cout lt lt Plea
  • 将 LineGeometry 与 EllipseGeometry 组合(在代码中,而不是 XAML)

    我正在尝试使用 WPF 创建自定义形状 对于初学者来说 我只是想创建一条简单的线 两端都有一个圆圈 我知道有 LineCaps 但这不是我要找的 我研究了一些教程 最简单的方法似乎是使用CombinedGeometry 但是我无法让它正常工
  • 停止和重置 NSTimer

    我有一个简单的计时器 按下按钮即可激活它 它从 60 运行到 0 没问题 但我想要的是停止并重置按钮上的计时器 我已经设法使用下面的代码在按下按钮时停止它 但由于某种原因无法让它重置并停止在 60 处 这应该很简单 但它不起作用 有什么建议
  • 如何在 WinRT 中的按钮中将文本放置在图像上

    我想创建一个使用图像作为背景的按钮 并在背景之上放置我的文本 我尝试过这样的事情
  • 使用 Django/Python 在创建临时文件的函数之外的内存中打开一个临时文件

    我和这个人度过了最糟糕的时光 在视图中 我创建了一个保存到内存的 csv 文件 我需要将该 csv 文件发送到 utils py 函数并发布到外部 api 我一辈子都不知道该怎么做 这真的让我发疯 我最初只是尝试在下面的 run test
  • python 中 %r、%s 和 %d 有什么区别? [复制]

    这个问题在这里已经有答案了 好吧 我总是在 python 上使用 r 但我不知道什么时候必须使用这些其他格式 这在中进行了解释Python 文档 简而言之 d将格式化一个数字以供显示 s将插入对象的表示字符串 即str o r将插入对象的规
  • 安全的伪流 flv 文件

    We use RTMP通过 Wowza 保护流媒体内容 它就像一个魅力 Wowza 是一个真正强大且健壮的媒体服务器 可用于商业目的 但我们遇到了一个问题 这个问题对我们来说每天都在变得越来越大 许多新客户由于防火墙规则而无法使用RTMP
  • 使用 JavaScript 播放声音

    我想创建一个表格 每行都有字符串和按钮 播放声音 每个按钮播放不同的声音 我想用这个方法来做 这是按钮
  • iPhone 在状态栏中添加图标(如电池指示器)

    我想知道是否可以在 iPhone 状态栏上添加一个图标 就像电池和 WiFi 指示器一样 我怎样才能做到这一点 Thanks 正如之前报道的 使用 SDK 无法做到这一点 如果您在越狱环境中工作 则状态栏图标需要放置在 System Lib
  • 将内联 SVG 保存为 JPEG/PNG/SVG

    我的 html 中有一个内联 SVG 我需要能够将其保存为 JPEG PNG 或 SVG 我尝试了几种不同的方法 将 SVG 转换为画布 然后转换为 JPEG 但我无法使这些方法正常工作 这是我的内联 SVG 的示例 font color
  • 将.CSV转换为.DBF(dBASEIII) VFP 6.0,一切都变成备注字段

    我正在尝试使用 python 将 excel 文件转换为 dbf dBASEIII 我当前的流程是 使用 xlrd 将 excel 文件转换为 csv 我从 csv 中取出标题并使用 获取新制作的 csv并使用dbf模块 https pyp
  • 何时断开与应用程序服务器建立的 bosh 连接以在 strope 中使用预绑定?

    这个问题是我之前关于这个问题的延伸 如何使用java smack库连接XMPP bosh服务器 我使用 Java 作为服务器端语言 我已经使用 smach jbosh 成功实现了 xmpp BOSH 连接 感谢 Deuteu 帮助我实现了这
  • 链接静态库时避免链接未使用的符号

    我正在使用苹果海湾合作委员会编译一个我要重新分发的 dylib 由于各种原因我正在使用一些库 比方说libz为了保持简单 由于这个库通常在 Mac 系统上找不到 我希望静态链接在通过将路径传递给 dylib 使用符号 a file以简化部署