【问题标题】:rpm reduces the size of shared libraryrpm 减小共享库的大小
【发布时间】:2012-12-21 10:19:02
【问题描述】:

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

任何帮助将不胜感激。

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

【问题讨论】:

  • 如果有迹象表明strip 被调用,你能看看rpmbuild 的输出吗?
  • 我发现这很可能是符号剥离的情况,根据快速谷歌搜索,可以通过在%install 中添加export DONT_STRIP=1 来解决。不过,我无法确认这一点,因为我目前无权访问rpmbuild。其他人可以吗?

标签: c linux shared-libraries rpm rpmbuild


【解决方案1】:

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

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

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

找出变化的最佳方法是使用readelf 探索库的两个版本,并查看部分列表(由readelf -S 报告)或符号(由readelf -s 报告)是否发生了变化.

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多