使用校验和标记共享库

时间:2013-03-20 21:51:32

标签: linux libraries checksum gentoo

如何使用构建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)

1 个答案:

答案 0 :(得分:0)

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

  

ld:新选项--build-id

     

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

Linux binutils-2.17.50.0.17版本在f8test1中包含了这个。