gpt4 book ai didi

gcc - objcopy 和 dsymutil 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 22:23:47 25 4
gpt4 key购买 nike

这两个命令在linux上是吗:

objcopy --only-keep-debug foo foo.dbg
objcopy --add-gnu-debuglink=foo.dbg foo

相当于 Mac 上的以下内容

dsymutil <binary> -o <binary>.dSYM

在某种意义上等效,

  1. 它创建一个独立的调试信息文件。
  2. 它在可执行文件和调试信息文件之间创建链接。

然后剥离

是linux上的命令:

objcopy --strip-debug foo

或者

strip -g <binary>

相当于 Mac 上的以下内容

strip -S <binary>

最佳答案

objcopy 的 --only-keep-debug 部分在功能上与 dsymutil 相同。

没有任何工具可以记录 dSYM 中的二进制位置。相反,dSYM 和二进制文件共享一个公共(public) UUID,想要查找符号文件的客户端使用 DebugSymbols 框架,该框架使用各种技巧(例如 Spotlight 导入器、搜索路径、“dSYM 查找外部脚本”等)来查找符号文件单独的调试文件。因此不需要与 --add-gnu-debuglink 等效的内容。

Mac 版本的 strip -S 会以与 binutils 版本相同的方式删除调试信息。不同之处在于 OS X 上的 strip -S 实际上不会减少二进制文件的大小。在 OS X 上,调试信息始终保留在可执行文件之外 - 驻留在 .o 文件或 dSYM 中。可执行文件只有一个小的“调试映射”,告诉 lldb 或 dsymutil 如何从 .o 文件链接 dwarf。 strip -S 只需删除调试映射。

关于gcc - objcopy 和 dsymutil 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33214529/

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