rpm debuginfo包问题

发布于 2022-10-15 05:13:30 字数 548 浏览 19 评论 0

操作系统:CentOS 5.6

请问:如何把应用程序中用到so动态链接库的debug调试信息打包到rpm的debuginfo包中。

具体情况是这样,原来有个程序,后来我给这程序做个插件,插件原来和原有程序是分开编译的,是独立的,只是运行时程序加载插件。
因为程序不断更新,我需要把插件和原有程序一起编译,原有程序是采用auto工具来做的,我做完相关修改,编译,打包,生成的rpm包安装之后是包含我做的插件的,
可问题是,打包的 rpm debuginfo 中不包含问插件的debug调试信息,调试起来郁闷之极。

于是,看了一下make rpm的输出
发现生成debuginfo包用的是 /usr/lib/rpm/find-debuginfo.sh 脚本,发现脚本大体执行过程就是查找ELF文件什么,然后找到其中的debug信息需要的文件,并把文件打包。

我想把我的插件的调试信息一起打包到原有的rpm debuginfo包中。

请教各位大侠,帮个忙。看看能否把插件的调试信息一并打包到rpm的debuginfo包中。小弟不胜感激

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暖阳 2022-10-22 05:13:30

想了一个不是办法的办法
因为find-debuginfo.sh 脚本主要功能是搜索可执行目录下的elf文件,首先说明so文件也是一个ELF文件,所以我们只要把so文件放入安装时用指定权限安装到可执行目录即可
到时,find-debuginfo.sh 自动会根据so文件导出其中debug信息,然后在debuginfo包中打入相应的so调试所需要的文件,基于此:
我修改了生成so文件的目录的makefile.am 文件,添加如下内容
install-data-local:
        /usr/bin/install -c -m 755 xxx.so $(DESTDIR)/usr/local/bin
其中上文中/usr/local/bin 可以在configure.ac中另行定义。
大体意思是,把生成的so文件到安装到了一个bin目录,此bin目录是find-debuginfo.sh 搜寻的目录,并打包所有可执行文件,包括so文件,的debuginfo包了。

上面的做法有个问题:
安装时会安装双份xxx.so文件,一份安装到bin目录(多余),一份安装到 lib 目录(正常)
所以为了修正这个问题,我需要在相应 spec文件中添加如下内容:

%post
bindir=/usr/local/bin/
rm -f $bindir/*.so
意思很简单了,当我们拿着rpm包安装时(不是debuginfo包),安装完成之后,执行删除bin目录下so文件的操作

综合以上,我们既能debuginfo包中打入相应的so调试需要的文件,也能实现比较GOOD的安装。

以上办法不得以而为之,如有更好办法,请各位GGJJ DDMM们踊跃拍砖。感谢大家

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文