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) |