リンカ・ローダと実行形式
動的リンクを使ったプログラムを別のコンピュータにコピーして実行したら、起動しなかった。最も考えられる原因はどれか。
- A実行ファイルの中にライブラリのコードがすべて入っていて、大きすぎたから
- B動的リンクのプログラムは、作ったコンピュータでしか動かない決まりだから
- C必要な共有ライブラリが入っていないか、互換性のないバージョンしかない
答えと解説を見る
正解:C. 必要な共有ライブラリが入っていないか、互換性のないバージョンしかない
動的リンクのプログラムは、実行するコンピュータにある共有ライブラリを使います。必要なライブラリがない、または関数が足りない古いバージョンしかないと、動的リンカが結合できず起動に失敗します。Linuxではlddコマンドで、プログラムが必要とする共有ライブラリと、それが見つかるかどうかを確かめられます。配布しやすさを重視して、あえて静的リンクにすることもあります。
- A. 動的リンクではライブラリのコードは実行ファイルに入りません。
- B. そのような決まりはありません。
- C. 正しい。実行環境のライブラリに依存します。