gpt4 book ai didi

linux - 从 .so 文件中删除路径,以便 RPM check-buildroot 成功

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:14 25 4
gpt4 key购买 nike

我将一些 Python 库打包为 RPM。一些库仅作为源分发版提供(没有轮子)。

在我的 RPM 规范中,我这样做:

pip install --root=%{buildroot} --prefix=/x/y tornado

rpmbuild 完成时,它运行 check-buildroot,并且构建失败并出现如下错误:

Binary file /a/b/c/BUILDROOT/my-rpm-1.0.0-1.el7.x86_64/x/y/lib64/python2.7/site-packages/tornado/speedups.so matches

如果我运行 strings tornado.so |,我会看到列出的 %{buildroot} 路径 | grep BUILDROOT.

如何清理 .so 文件?或者更一般地说,我怎样才能使 check-buildroot 通过?

最佳答案

我想出了如何从 SO 文件中删除路径。

我确定路径是使用此命令嵌入的调试信息:

readelf --debug-dump=line speedups.so | less

strip 命令可以从 SO 文件中删除调试信息,因此我将其添加到我的 RPM 规范中:

BuildRequires: binutils

set +e
find "%{buildroot}{%_prefix}/lib64/python2.7/site-packages" -type f -name "*.so" | while read so_file
do
strip --strip-debug "$so_file"
done
set -e

注意:strip 在某些 SO 文件上会出现段错误,目前尚不清楚原因。我使用 set +e 禁用了立即退出,以便构建忽略它们。

关于linux - 从 .so 文件中删除路径,以便 RPM check-buildroot 成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52766091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com