【问题标题】:Cannot reproduce building static library无法重现构建静态库
【发布时间】:2020-07-24 12:06:44
【问题描述】:

我创建了一个静态库 (libxil.a)(更准确地说是 Xilinx 的 SDK 从 BSP 源生成一个静态库)

我意识到在相同的源上运行两次make 会产生不同的libxil.a。 (md5sum-s不同):

$ make
...

$ md5sum libxil.a
66f2a981ba0e608b4747d59c8d706561  libxil.a

$ make clean

$ make
...

$ md5sum libxil.a
ba26dba2211e539d0f17d9a4464b3386 libxil.a

我尝试查看与objdump -s 的区别,但没有:

diff  <(objdump -s libxil1.a) <(objdump -s libxil2.a)

(-s显示所有请求部分的完整内容)

如何查看差异?

为什么两个编译完全不同?

【问题讨论】:

    标签: gcc elf objdump


    【解决方案1】:

    objdump 的 -s 开关不会转储标头。也使用-x开关,“显示所有标题的内容”

    $ diff  <(objdump -sx libxil1.a) <(objdump -sx libxil2.a)
    ...
    4c4
    < rw-rw-r-- 1008/1008   1324 Jul 24 10:36 2020 xio.o
    ---
    > rw-rw-r-- 1008/1008   1324 Jul 24 10:46 2020 xio.o
    ...
    

    静态库存储目标文件的创建日期。而且这些时间戳因编译而异。

    【讨论】:

    • 请注意,在创建lib*.a 时使用ar D ... 将消除这种不可再现性。
    猜你喜欢
    • 2015-05-02
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多