萌えハッカーニュースリーダー

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

出典: https://fabiensanglard.net/dc/index.php
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

私はもう実行可能です!…冗談です。まだまだ博士の助けが必要ですよ。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search