為什麼“ldd /usr/bin/firefox”不列出庫檔案?

為什麼“ldd /usr/bin/firefox”不列出庫檔案?

我正在遵循有關如何查找程式的依賴庫的教程,其解釋如下:

  1. whereis firefox 顯示安裝它的資料夾,取得二進位檔案的完整路徑,以及
  2. ldd /usr/bin/firefox 將其作為 ldd 命令的參數。

本教學也使用 Firefox 作為範例,因此我確定要重新建立它,但是當我輸入:

答案1

可執行檔firefox是系統上的 shell 腳本。

一些應用程式使用包裝腳本來設定應用程式的執行環境,可能是為了更好地與當前的 Unix 風格集成,或者提供運行應用程式的替代方法(新的命令列選項集等)。 。有時,包裝器腳本用於根據呼叫腳本的方式選擇正確的實際二進位來運行。

例如,MPI(「訊息傳遞介面」)C 編譯器只不過是一個包裝腳本cc(或它設定使用的任何編譯器),確保 MPI 頭位於搜尋路徑中並且 MPI 庫已連結在編譯的時候。

看一下這個腳本,看看它在什麼情況下調用什麼二進位。

答案2

$ file $(which firefox)
/usr/bin/firefox: Bourne-Again shell script, ASCII text executable

$ tail $(which firefox)
done

# Run the browser
debugging=0
if [ $debugging = 1 ]
then
  echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
fi

exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"

相關內容