Shared-Library
“未使用的直接依賴項”是什麼意思?
使用該
ldd
命令時,有一個選項-u
, 來列印未使用的直接依賴項
如線上幫助中所述。
例如:
ldd -u /bin/gcc Unused direct dependencies: /lib64/libm.so.6 /lib64/ld-linux-x86-64.so.2
什麼是“未使用的直接依賴項”?為什麼它們沒有被使用?為什麼它們是依賴項?
它們是依賴項,因為二進制將它們列為依賴項,在其動態部分中作為“NEEDED”條目:
readelf -d /usr/bin/gcc
將向您顯示庫
gcc
請求。它們未使用,因為
gcc
實際上不需要相關庫導出的任何符號。在ld-linux-x86-64.so.2
’s 的情況下,這很正常,因為那是解釋器。在libm
這種情況下,這通常是無條件的-lm
,沒有相應的連結器選項來刪除未使用的庫。在許多情況下,這是由於建構工具的粒度有限。特別是,連結例如GNOME 庫往往會導致很長的庫列表,這些庫並不總是需要作為直接依賴項(但最終會出現在庫依賴項樹中)。通常最好盡量避免使用未使用的依賴項,以簡化依賴項處理(通過執行時連結器和包管理工具)。忽略它是安全的,
libm
因為libc
無論如何這都是相關的。