2012-11-01 26 views
5

在文件上執行ldd時,它會在括號中返回一個十六進制數,並返回找到的每個庫。括號中的ldd十六進制數

例如:

[email protected]> ldd wpa_supplicant 
     linux-gate.so.1 => (0xb779b000) 
     libnl.so.1 => /usr/lib/libnl.so.1 (0xb774d000) 
     libssl.so.1.0.0 => not found 
     libcrypto.so.1.0.0 => not found 
     libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7748000) 
     libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75ed000) 
     libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb75c7000) 
     /lib/ld-linux.so.2 (0xb779c000) 

如果十六進制數不是可執行文件,一旦得到了對鏈接庫中的一個,可能會出現的版本信息錯誤。

我有兩個問題:

  1. 哪裏該值產生的?
  2. 如何找出可執行文件正在查找哪個十六進制值? (即它最初鏈接的那個)
+0

我不知道這是肯定的,但我不認爲十六進制數與庫的版本有什麼關係 - 我認爲它是(建議/預期)地址,該庫將被映射到程序地址空間,當你執行它。要查看您需要的庫的版本,請嘗試'ldd -v'。 – twalberg

+0

如果每次運行ldd時這些值都不會改變,只需將該系統撕碎並使用真實,安全且最新的Linux系統即可。 – BatchyX

回答