Shared-Library

“未使用的直接依賴項”是什麼意思?

  • October 3, 2018

使用該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無論如何這都是相關的。

引用自:https://unix.stackexchange.com/questions/473014