如何取得 Linux 下的共享庫檔案名稱清單?

如何取得 Linux 下的共享庫檔案名稱清單?

是否有內建的 GNU Linux 用於獲取共享庫的檔案名稱清單?我考慮過解析 的輸出ldconfig -p。但是,我不確定係統之間輸出的一致性。

我已經知道我可以使用,find但鑑於鏈接器/加載器具有庫和位置的緩存,以某種方式使用它似乎更有效。此外,連結器/載入器搜尋的路徑是我唯一關心的路徑—即已由ldconfig.

答案1

如果你想捕獲所有這些,除了進行完整的檔案系統遍歷之外別無選擇。ldconfig只知道標準路徑中的庫以及它配置要查找的額外路徑(通常在 中定義/etc/ld.so.conf*)。可以找到其他庫的通常可疑位置是$HOME/opt,儘管沒有限制,特別是當人們自己建立應用程式時。

如果您不信任 的輸出ldconfig -p,可以直接解析其快取。它是二進制的,但使用strings會刪除所有垃圾(5 所以 /lib/ 匹配):

strings -n5 /etc/ld.so.cache

在我的系統上,它們都給出相同的結果,我快速驗證了這一點:

a=$(ldconfig -p | awk -F'> ' '{print $2}' | sort); # get them to the same format
b=$(strings -n5 /etc/ld.so.cache | sort -u); 
echo -e "$a\n$b\n$b" | sort | uniq -u

它檢查ldconfig -p列表中的任何庫是否未在快取中提及。什麼也沒有返回。

相關內容