• 締切済み

Cコンパイラ(gcc)について

はじめまして。 C言語のコンパイラについてお尋ねしても宜しいでしょうか。 以下のファイルが存在します。 ・test.c(C言語のソースファイル) ・test.exe(上記ソースをコンパイルしたもの。Windows環境で現在稼動してます) test.cの中身を一部変更し、コンパイルする必要があるのですが、 (恥ずかしながら、コンパイルした人間はもう居ないので) 何のコンパイラを使ったか、判りません。 コンパイルするときに使用したであろうコマンドがあります。 gcc test.c -WALL -03 -o test.exe 察するに、gccというコンパイラを使用したと思い MiniGW (http://yanchde.gozaru.jp/mingw/wingw_start.html) を使用してコンパイルをしてみました。 コンパイルは通るのですが、出来上がるexeファイルのサイズが 非常に小さいです。 (オリジナルのtest.exeは500KB以上ありますが、今回コンパイルで出来たものは40kbほどです) この場合、、オリジナルのtest.exeと今回コンパイルしたexeは 異なる挙動をする可能性はありますでしょうか。。 初歩的な質問で恐縮ですが、どうかご教授頂けると、幸いです。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> この場合、、オリジナルのtest.exeと今回コンパイルしたexeは > 異なる挙動をする可能性はありますでしょうか。。 一部変更したのであれば、間違いなく異なる挙動をします。 変更せずにコンパイルしなおしただけでも、異なる挙動をする可能性はあります。 サイズが大きく異なるのは、主に3つの原因が考えられます。 1. オリジナルはデバッグ版としてコンパイルしていた。 2. オリジナルはライブラリをスタティックリンクしていた。 3. オリジナルをコンパイルしたコンパイラは、最適化性能が著しく低かった(もしくは最適化を抑止した)。 このうち3.の可能性は低いと思います。 可能性として一番高いのは1.ですが、1.と2.の合わせ技かもしれません。

関連するQ&A