はじめに C 言語を学び始めると、「プログラムは main 関数から実行される」と教わるのが一般的ではないかと思う。それ自体が誤りとは言わないが、ちょっと手を動かして調べてみれば事態はそう単純な話ではないことに気付くだろう。 と言うわけで、本記事ではプログラムはどこから始まるかを実際に手を動かして確認していきたいと思う。 なお、確認は WSL2 の Ubuntu 24.04 で実行している。実際に表示される値は環境によって異なるとは思うが、同じ流れで確認できるはずだ。また、Linux 以外でも *BSD 系であれば同じようなことが分かるのではないかと思う。Windows?macOS?知らない子ですね… 真の実行開始地点はどこか? 単に一言「プログラムは main から始まるわけではない」とだけ言われても、「じゃあどこなんだよ?」となるだろう。 そこで、コンパイラによって生成された実行ファイ

