如何在生成共享库时保留调试符号



从对象文件生成共享对象时,是否有可能保留调试符号?

例如,我使用隐式目标使用cc生成带有调试符号的对象文件,并且只将-g添加到CFLAGS中。然后,我通过定义一个自定义目标来生成共享对象(.so)文件,在该目标中我使用了cc.的-shared选项

到目前为止,我的观察结果是:

  • 当直接从源代码文件生成共享对象时,我确实得到了调试符号
  • 从包含调试符号的对象文件生成共享对象时使用-g选项没有帮助

我的假设是:

  • 调试符号实际上并不包括在内,因为在创建rpm时,/usr/lib/rmp/find-debuginfo.sh会自动运行,并且我收到一些警告,说我的文件已经被剥离

如果需要确切的文件进行检查,请以radius.so的生成方式为例:http://git.ozlabs.org/?p=ppp.git;a=斑点;f=pppd/plugins/radius/Makefile.linux;h=24de3e580c4db6eca129dd22dbe5f2d1ff5f;hb=头

我需要再次提到,我已经向CFLAGS添加了-g选项。

谢谢!

快速而肮脏的答案是添加退出0在%install脚本的末尾附加到的末尾的各种帮助程序运行时的%install内部版本scriptlet。

更具体的答案是检查辅助脚本(剥离调试符号的共享库)使用rpm—showrc并修改正在运行的帮助程序。

需要配置为diable调试符号剥离为:

# Define per-arch and per-os defaults. Normally overridden by per-target macros.
%__arch_install_post    %{nil}
%__os_install_post      %{___build_post}

它们通常在redhat-rpm配置包中重新定义。

相关内容

  • 没有找到相关文章

最新更新