【问题标题】:tagging a shared library with checksum使用校验和标记共享库
【发布时间】:2013-03-20 21:51:32
【问题描述】:

如何使用构建 ID 标记 ELF 库? 我下载了一个预编译库,其中包含一个 sha1 和:

user@localhost ~/tmp $ file foo.so.0
foo.so.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x7e3374eb34cafb69d3dca8b126f4aa33d44bb465, stripped

user@localhost ~/tmp $ ldd foo.so.0
linux-vdso.so.1 (0x00007fff955b1000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f436d3c9000)
libc.so.6 => /lib64/libc.so.6 (0x00007f436d022000)
/lib64/ld-linux-x86-64.so.2 (0x0000003000000000)

【问题讨论】:

    标签: linux libraries checksum gentoo


    【解决方案1】:

    来自http://fedoraproject.org/wiki/RolandMcGrath/BuildID

    ld:新选项--build-id

    这为 ld 添加了一个选项,用于合成具有 SHT_NOTE 类型和标志 SHF_ALLOC(只读数据)的 .note.gnu.build-id 部分,其中包含 ELF 注释标题和构建 ID 位。然后它进入链接,就好像它是第一个目标文件的一部分一样(因此它可以由链接器脚本放置或合并)。构建 ID 位被确定为 ld 在写出链接文件之前所做的最后一件事。您可以给 --build-id=style 选择 md5、uuid(128 个随机位)或 0xabcdef(您选择的十六进制字节)。只是 --build-id 默认为 md5,它根据文件中的所有 ELF 标头位和部分内容计算 128 位 MD5 签名 - 即,在 ELF 文件有意义的内容集中唯一的 ID 并且相同当输出文件本来是相同的。

    Linux binutils-2.17.50.0.17 版本在 f8test1 中包含此内容。

    【讨论】:

    • 请在实际答案中包含您链接到的页面的相关部分。如果页面被移动,您的答案将变得毫无用处。
    • 复制了 ld 的 --build-id 标志的解释。
    • 与其只是复制文字,不如解释一下。
    猜你喜欢
    • 2011-09-02
    • 2012-12-06
    • 2015-09-30
    • 1970-01-01
    • 2017-07-19
    • 2019-01-21
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多