RPM构建过程中如何指定使用的strip版本?
在RPM构建过程中指定自定义strip版本的解决方法
这种情况我之前也碰到过——系统自带的strip版本跟不上新编译工具链的要求,rpmbuild又死咬着/usr/bin/strip不放。这里有几个实用的解决办法,按全局到局部的优先级给你整理好了:
1. 全局生效:修改~/.rpmmacros配置文件
这是一劳永逸的方式,之后所有rpmbuild任务都会自动使用你指定的新版strip:
- 打开用户目录下的
.rpmmacros文件(如果不存在就直接新建一个) - 添加一行配置,把
__strip变量指向你安装的新版strip绝对路径,比如:
举个实际例子,如果你的新版binutils装在%__strip /opt/new-binutils/bin/strip/usr/local/binutils-2.40/bin下,就写成:%__strip /usr/local/binutils-2.40/bin/strip - 保存文件后重新运行rpmbuild,就会自动调用新版strip了。
2. 局部生效:在目标RPM Spec文件中指定
如果只想让某个特定包的构建使用新版strip,直接在对应.spec文件里加配置:
- 在spec文件的开头(比如
%prep阶段之前)添加:
这个配置只会作用于当前spec文件的构建,不会影响其他RPM包的编译。%global __strip /path/to/your/new/strip
3. 临时生效:通过环境变量临时覆盖PATH
如果只是临时测试,不想修改任何配置文件,可以在运行rpmbuild前把新版strip所在目录放到PATH最前面:
export PATH=/path/to/your/new-binutils/bin:$PATH rpmbuild -ba your-package.spec
这样rpmbuild会优先找到PATH靠前位置的新版strip,而非系统默认的/usr/bin/strip。
验证配置是否生效
不管用哪种方法,都可以先验证一下rpmbuild是否已经识别到指定的strip:
运行以下命令查看当前rpmbuild使用的strip路径:
rpmbuild --showrc | grep __strip
如果输出显示你指定的新版strip路径,就说明配置已经生效了。
内容的提问来源于stack exchange,提问作者Fadecomic
相关产品推荐
相关产品推荐

