如何禁用rpmbuild的Duplicate build-ids错误?该错误成因是什么?
问题原因
这些accel-qtest-*.so文件是QEMU针对不同架构生成的qtest加速模块,但它们的代码逻辑完全一致,编译后的二进制内容没有任何差异。RPM的build-id是通过计算二进制文件的哈希值生成的,用来唯一标识每个二进制文件,当多个文件哈希值相同时,就会触发重复build-id的错误。
禁用重复build-id错误的方法
有两种方式可以处理这个问题:
1. 单次构建临时禁用
执行rpmbuild命令时,通过宏定义关闭build-id的校验:
rpmbuild --define '_build_id_verify_level none' -ba qemu.spec
或者关闭build-id的硬链接生成(同样可以避免该错误):
rpmbuild --define '_build_id_links none' -ba qemu.spec
2. 修改spec文件永久禁用
在QEMU的spec文件开头添加以下宏定义,后续构建都会自动跳过重复build-id的检查:
%define _build_id_verify_level none
或者选择关闭build-id硬链接:
%define _build_id_links none
内容的提问来源于stack exchange,提问作者KJ7LNW
相关产品推荐
相关产品推荐

