2013-03-20 74 views
0

如何使用生成ID標記ELF庫? 我下載了中有一個SHA1和預編譯庫:使用校驗和標記共享庫

[email protected] ~/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 

[email protected] ~/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) 

回答

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,當輸出文件本來是相同的。

Linux binutils-2.17.50.0.17發行版在f8test1中包含了這一點。

+0

請在實際答案中包含您鏈接的頁面的相關部分。如果頁面被移動,你的答案將變得毫無用處。 – ChrisF 2013-04-21 19:15:06

+0

複製了ld的--build-id標誌的解釋。 – r0bertz 2013-04-21 19:34:23

+0

而不是僅僅複製文本,最好解釋它。 – ChrisF 2013-04-21 19:42:06