Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2345321
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: LINUX

2010-09-10 19:28:30

rpmbuild 在生成二进制包时, 也会生成相应的一个 debuginfo包, 但这个包有时候内容为空, 也就是不包含任何真正的文件.

原因之一是, Makefile里用了install -s 这样的命令选项, 其中的-s 将会导致对strip命令的调用. 这会把你二进制文件中的debug symbol删掉, rpmbuild也就从中取不出什么debug信息了.

第一次碰到这个问题时, 是我在自己的机器上做build, 所以把/usr/bin/strip 给替换成了
#!/bin/bash
true

后来把build转给同事时, 他不能生成正确的debuginfo包. 我想到替换系统范围的strip可能不是个好办法. 现在改成这样:

在项目目录中放置一个 strip 文件, 内容如上面的二行. 运行之前要保证有可执行属性, 这在用一些代码管理工具如TFS 时是做不到的.

在写make rpm 目标时, rpmbuild 命令之前放上这样一个变量:
PATH="$(project_dir):$$PATH"  rpmbuild ...

这样rpmbuild的环境变量PATH中, 项目的当前目录在最前面, 它里面的strip首先被找到来运行, 当然它什么都不干就返回. 目的达到.

$$PATH 中 需要两个$.
阅读(2909) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

dywer2015-04-01 18:14:06

太感谢啦! 终于解决了这个问题