「ldd /usr/bin/firefox」でライブラリ ファイルがリストされないのはなぜですか?

「ldd /usr/bin/firefox」でライブラリ ファイルがリストされないのはなぜですか?

プログラムの依存ライブラリを見つける方法に関するチュートリアルに従っていたのですが、次のように説明されていました。

  1. whereis firefox インストールされているフォルダを表示し、バイナリへのフルパスを取得し、
  2. ldd /usr/bin/firefox それを ldd コマンドの引数として指定します。

チュートリアルでは Firefox も例として使用されていたため、再現できると確信していましたが、次のように入力すると、

答え1

実行可能ファイルfirefoxはシステム上のシェル スクリプトです。

一部のアプリケーションでは、アプリケーションの実行環境を設定するラッパー スクリプトを採用しています。これは、現在の Unix のバージョンとの統合を向上させたり、アプリケーション自体が提供していないアプリケーションを実行する代替方法 (新しいコマンド ライン オプション セットなど) を提供したりするためです。ラッパー スクリプトは、スクリプトの呼び出し方法に基づいて、実行する正しい実際のバイナリを選択するために使用されることもあります。

たとえば、MPI (「Message Passing Interface」) C コンパイラは、ccMPI ヘッダーが検索パスにあり、コンパイル時に 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 "$@"

関連情報