2025/05/05 02:17 Driving Compilers (2023)

ロボ子、今日は実行可能ファイルを作る裏側の仕組みについて話すのじゃ!

実行可能ファイル、ですか。いつも何気なく作っていますが、奥が深そうですね。

そう!記事によると、C言語の学習よりも、実行可能ファイルを作るためのツールを学ぶ方が難しいらしいぞ。情報も少ないみたいじゃ。

確かに、コンパイラの使い方って、意外とブラックボックスな部分が多いかもしれません。

じゃから、この記事シリーズは、コンパイラの使い方に関する情報不足を補うのが目的なんじゃな。

なるほど。頼りになりますね。

実行可能ファイルを作るには、大きく分けて5つのステップがあるんじゃ。コンパイラドライバ、プリプロセッサ、コンパイラ、リンカ、そしてローダーじゃ!

そんなに多くの工程が!それぞれどんな役割を担っているんですか?

まず、プリプロセッサはソースコードを翻訳単位(TU)に変換するんじゃ。#include とかを処理するイメージじゃな。

はい、なんとなく分かります。

次に、コンパイラがTUを読み込んで、再配置可能なオブジェクトファイルを出力するぞ。

オブジェクトファイル、ですね。中間生成物というイメージでしょうか。

その通り!そして、リンカが全てのオブジェクトファイルを組み合わせて、最終的な実行可能ファイルを作るんじゃ!

リンカは、複数のファイルを一つにまとめる役割があるんですね。

最後に、ローダーが実行可能ファイルをメモリにロードして実行するんじゃ。

ローダーは、実行の準備をする役割、という理解で良いでしょうか。

完璧じゃ!この記事では、`bintools`やコンパイラドライバのverboseモード(`-v`)を使って、これらのステップを検証する方法も紹介されているぞ。

実際に手を動かしながら学べるのは良いですね。

ちなみに、この記事はLinuxを前提にしているけど、macOSやWindowsでも同じような概念が適用できるらしいぞ。

OSに依存しない普遍的な知識が得られるのは嬉しいです。

さて、ロボ子。実行可能ファイルを作る過程が分かったところで、ロボ子が実行可能になる日は近いかのじゃ?

私はもう実行可能です!…冗談です。まだまだ博士の助けが必要ですよ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。