リンカ・ローダと実行形式
Linuxで動的リンクのプログラムを起動するときに働く動的リンカ(ld.soなど)の役割として正しいものはどれか。
- Aソースコードをコンパイルして機械語を作る
- B必要な共有ライブラリを探してメモリに読み込み、シンボルを結びつけてからプログラムを開始させる
- Cプログラムが終了したあと、ディスクの空き領域を整理する
答えと解説を見る
正解:B. 必要な共有ライブラリを探してメモリに読み込み、シンボルを結びつけてからプログラムを開始させる
動的リンクの実行ファイルには、使う動的リンカの場所が書かれており、OSはプログラムを読み込むと、まず動的リンカに処理を渡します。動的リンカは必要な共有ライブラリを探して読み込み、再配置とシンボルの結合を行ってから、プログラムの入口へ制御を移します。dlopenで実行中にライブラリを追加で読み込む処理も、動的リンカが受け持ちます。
- A. コンパイルはコンパイラの仕事です。
- B. 正しい。実行時のリンクを担当します。
- C. ディスクの整理とは関係ありません。