2

我正在制作我的共享库的 rpm。在 .spec 文件中,我在 %install 部分编写正常的安装命令,制作一些软链接,在 %post 和 %postun 上运行 ldconfig。我没有在 rpm 中构建库,因为我已经编译并剥离了库。但是碰巧当我在使用 rpm 安装共享库之前看到库的文件大小(在我的开发文件夹中)时,它的大小为 24k,并且当我在 /usr/lib64/ 上看到共享库的部署文件时,大小是大约 23.8k 由于部署前和部署后库的哈希值不匹配(我现在需要匹配)。有什么问题?

任何帮助,将不胜感激。

编辑:我有两个库文件。部署前的共享库文件比通过 rpm 部署后的文件多 8 个块。

4

1 回答 1

4

关于导致变化的原因有多种可能性......

首先是 RPM 可能会剥离一些符号 - 如果存在未导出的内部函数符号,那么它可能会选择剥离它们。

它也可能会从文件中删除各种 ELF 部分,因为 RPM 通常会尝试将任何调试信息提取到单独的文件中,然后将这些文件放在单独的 debuginfo 包中。即使您在库中没有任何实际的调试信息,它也可能仍然有空的调试部分,这些部分正在被此进程删除。

弄清楚发生了什么变化的最好方法是探索库的两个版本,readelf看看节列表(由 报告readelf -S)或符号(由 报告readelf -s)是否发生了变化。

于 2012-12-21T11:37:34.027 回答