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

Linuxのdlopen関数(WindowsのLoadLibraryに相当)の使い道として最も適切なものはどれか。

  1. Aプログラムのソースコードを開いて編集する
  2. Bプラグインのように、実行中に必要になった共有ライブラリを読み込んで関数を呼ぶ
  3. Cファイルを開いて、中のデータを読み書きする
答えと解説を見る

正解:B. プラグインのように、実行中に必要になった共有ライブラリを読み込んで関数を呼ぶ

通常の動的リンクでは、使う共有ライブラリが起動時に決まっています。dlopenを使うと、実行中に名前を指定してライブラリを読み込み、dlsymで関数の番地を取り出して呼べます。どのライブラリを使うかを設定や利用者の選択で決められるので、プラグインの仕組みや、あれば使う任意の機能の実装によく使われます。

  • A. ソースコードの編集とは関係ありません。
  • B. 正しい。起動時ではなく必要になったときに読み込みます。
  • C. 普通のファイルを開くのはfopenやopenです。
この分野を解く 分野ページへ

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

  1. 100個のプロセスが同じ共有ライブラリを使っているとき、物理メモリの使い方として正しいものはどれか。
  2. オブジェクトファイルを逆アセンブルすると、外部の関数printfを呼ぶ命令の飛び先が0のように仮の値になっていた。この値はいつ正しく埋められるか。
  3. 組込み向けの開発で使うリンカスクリプトの役割として正しいものはどれか。
  4. OSのないマイコンで、電源を入れた直後に起動コードがmainを呼ぶ前に行う処理として正しいものはどれか。
  5. ELFのファイルにおける「セクション」と「セグメント」の違いとして正しいものはどれか。