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

主なOSで使われる実行ファイルの形式の組み合わせとして正しいものはどれか。

  1. ALinuxはPE、WindowsはMach-O、macOSはELF
  2. BLinuxはELF、WindowsはPE、macOSはMach-O
  3. CどのOSもELFを使う
答えと解説を見る

正解:B. LinuxはELF、WindowsはPE、macOSはMach-O

実行ファイルの形式はOSごとに決まっています。LinuxやBSD、多くの組込み機器はELF、Windowsは.exeや.dllのPE(Portable Executable)、macOSやiOSはMach-Oを使います。中身の考え方(コード・データの領域、シンボル、再配置、動的リンクの情報)は似ていますが、形式が違うので、同じCPU向けでもOSが違えば実行ファイルはそのままでは動きません。

  • A. 組み合わせが入れ替わっています。
  • B. 正しい。OSごとに形式が違います。
  • C. WindowsとmacOSは別の形式です。
この分野を解く 分野ページへ

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

  1. 再帰が深くなりすぎてスタックの上限を超えたとき、Linuxなどで一般に起こることとして正しいものはどれか。
  2. C言語で、初期値を書かない局所変数とグローバル変数の、使い始めたときの値について正しいものはどれか。
  3. mallocとfreeを繰り返すうちに、空きメモリの合計は十分あるのに、大きな領域をまとめて確保できなくなることがある。この現象を何と呼ぶか。
  4. 共有ライブラリを作るとき、外から使う関数だけを公開し、内部の関数はシンボルの可視性(visibility)を「hidden」にする利点として正しいものはどれか。
  5. C++でグローバルなオブジェクトのコンストラクタがmainより前に実行されるしくみとして正しいものはどれか。