免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6175 | 回复: 1
打印 上一主题 下一主题

rpm debuginfo包问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-03 20:15 |只看该作者 |倒序浏览
操作系统: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包中。小弟不胜感激

论坛徽章:
0
2 [报告]
发表于 2011-06-08 18:17 |只看该作者
想了一个不是办法的办法
因为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们踊跃拍砖。感谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP