Dynamic-Linking

命令列出要在其中查找共享庫的目錄?

  • September 6, 2016

我已經閱讀which了共享庫的等效內容以及執行檔在執行時在哪裡查找共享對象,但是是否有命令列出將在其中搜尋共享庫的所有目錄?

類似於自動計算第二個問題中解釋的所有列表的命令。

短:沒有

long:相關的環境變數是系統和配置相關的。對於給定的系統/配置,您可以編寫一個執行此操作的腳本。

*執行檔在執行時在哪裡查找共享對象*提供了一些見解,但並不完整。它提到了 OSX 和 Solaris,但側重於 Linux,指向兩個資源:

您還會發現這些很有用:

ldconfig****/etc/ld.so.conf創建必要的連結和記憶體到在命令行指定的目錄、文件和受信任 的目錄中找到的最新共享庫,/lib並且/usr/lib(在某些 64 位架構上,例如 x86-64、lib**/usr/lib**和32 位庫的受信任目錄,而 **/lib64/usr/lib64**用於 64 位庫)。

特別是“ sudo ldconfig -v

-v, 詳細模式。列印目前版本號、掃描的每個目錄的名稱以及創建的任何連結。覆蓋安靜模式。--verbose

這與所要求的很接近,但提供了很多無關的資訊。(雖然 BSD 使用它,但它在很大程度上是 Linux 特定的——但不同,請參見手冊頁)。如果您對其輸出格式做出一些假設,則可以使用以下方法從中獲取目錄

sudo ldconfig -v 2>/dev/null | grep ':$' |sed -e 's/://'

這給出了(在一個系統上)

/usr/local/lib
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/lib
/usr/lib

回顧一下:沒有command,但您可以製作一個腳本,該腳本依賴於系統。

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