リンカ・ローダと実行形式

静的リンクの説明として正しいものはどれか。

  1. A使うライブラリのコードを実行ファイルの中にコピーして結合する
  2. Bプログラムを実行するたびに、ライブラリを読み込んで結合する
  3. Cライブラリを使わずに、すべての処理を1つのソースファイルに書く
答えと解説を見る

正解:A. 使うライブラリのコードを実行ファイルの中にコピーして結合する

静的リンクでは、リンカが静的ライブラリ(Linuxでは.aファイル)から必要な関数を取り出して実行ファイルに組み込みます。実行環境にライブラリがなくても動き、起動時の結合の手間もありませんが、実行ファイルが大きくなり、同じライブラリを使うプログラムごとにコピーを持ちます。ライブラリに不具合の修正があっても、作り直さないと反映されません。

  • A. 正しい。実行ファイルだけで動きます。
  • B. それは動的リンクです。
  • C. ライブラリを使うかどうかとは別の話です。
この分野を解く 分野ページへ

リンカ・ローダと実行形式のほかの問題

  1. 動的リンク(共有ライブラリ)の利点として正しいものはどれか。
  2. 動的リンクを使ったプログラムを別のコンピュータにコピーして実行したら、起動しなかった。最も考えられる原因はどれか。
  3. 静的ライブラリ(.aファイル)と一緒にリンクするとき、リンカが実行ファイルに組み込むものとして正しいものはどれか。
  4. GNUのリンカで「gcc -lmylib main.o」のように、静的ライブラリをそれを使うオブジェクトファイルより前に書くと、未定義の参照のエラーになることがある。その理由として正しいものはどれか。
  5. 位置独立コード(PIC)の説明として正しいものはどれか。