📝

MinGWのgccデフォルト出力はなぜa.exeなのか

2020/09/27に公開

TL;DR

gcc で出力ファイル名を指定する -o オプション がないときのデフォルト出力ファイル名が a.out で その Windows 移植版である MinGW のデフォルト出力は a.exe だから

調べた経緯

後輩が Windows 版 Visual Studio Code で C++ の勉強してて、
出力ファイル名を a.exe にしてデバッグしたりしてるからなんだそのポンコツ名どこで指定してんだって探してもどこででも指定してなくてなんじゃこりゃと思って調べてみたらgccのデフォルトだったという話。
あと、hoge.o っていうファイルがコンパイル時に生成されていて後輩がテキストエディタで hoge.o を開こうとして「文字化けが直らないんです~」とか言ってるからそれエディタで開くファイルじゃなくね?みたいな話の正確な根拠を即答できなかったのでこっちも調べてみらhoge.o はオブジェクトファイル(C#とかだと .objに相当)ってことも以下リファレンスに書いてあったのでべんきょうになりましたまる

参考

3.2 Options Controlling the Kind of Output - GCC online documentation

※本文と関係ないけど GCC online documentation みづらすぎ…… HTML公開版をそのまま見る前提じゃないのかもしれないけどさすがに。Google検索のサイト指定オプション使って "a.out" site:gcc.gnu.org/onlinedocs とかで検索してようやく目的の場所にたどりつけた

Discussion