应该使用啥命令来创建一个只包含所有目标文件符号的文件?

Posted

技术标签:

【中文标题】应该使用啥命令来创建一个只包含所有目标文件符号的文件?【英文标题】:What command should be used for creating a file containing only all object file symbols?应该使用什么命令来创建一个只包含所有目标文件符号的文件? 【发布时间】:2014-06-14 21:01:37 【问题描述】:

我正在寻找一个命令,它可以为剥离的二进制文件创建补充文件,该文件是使用命令创建的:strip --strip-all foo 事实上,我会很高兴拥有创建两部分可执行文件的过程:一部分是完全剥离的可执行文件,第二部分包含所有符号。剥离的可执行文件还应该链接到符号文件。该过程类似于 objcopy 手册页中描述的调试符号:

1.正常链接可执行文件。假设它被称为 “foo”然后...

2.运行“objcopy --only-keep-debug foo foo.dbg”到 创建一个包含调试信息的文件。

3.运行“objcopy --strip-debug foo”创建一个 剥离的可执行文件。

4.运行“objcopy --add-gnu-debuglink=foo.dbg foo” 将调试信息的链接添加到 剥离的可执行文件。

问候

【问题讨论】:

您有什么具体的目标吗?如果您需要符号用于调试目的,只需保留已编译二进制文件的未剥离版本即可? 我计划分发剥离的二进制文件并保留符号以备需要调试时使用。有时不可能只用未剥离的二进制文件替换二进制文件,但需要调试已剥离的二进制文件并加载符号文件。 【参考方案1】:

根据http://marcioandreyoliveira.blogspot.dk/2008/03/how-to-debug-striped-programs-with-gdb.html,您应该保存已编译的可执行文件的副本并剥离可执行文件以进行部署。 调试时,您可以指示 GDB 从保存的可执行文件中加载符号。我认为没有理由使用 objcopy。

【讨论】:

以上是关于应该使用啥命令来创建一个只包含所有目标文件符号的文件?的主要内容,如果未能解决你的问题,请参考以下文章

linux下备份一个目录下所有文件及目录,应该用啥命令?

使用啥 ffmpeg 命令将无符号整数列表转换为音频文件?

mysql命令行中,以啥符号结束命令

8-16位密码,数字、大小写字母组合、符号至少包含两种,是啥意思?

“gcc -s”和“strip”命令有啥区别?

shell脚本中的$<是啥意思?谢谢!