みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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は
異なる挙動をする可能性はありますでしょうか。。

初歩的な質問で恐縮ですが、どうかご教授頂けると、幸いです。

投稿日時 - 2009-03-29 01:56:17

QNo.4835357

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

> この場合、、オリジナルのtest.exeと今回コンパイルしたexeは
> 異なる挙動をする可能性はありますでしょうか。。

一部変更したのであれば、間違いなく異なる挙動をします。
変更せずにコンパイルしなおしただけでも、異なる挙動をする可能性はあります。

サイズが大きく異なるのは、主に3つの原因が考えられます。

1. オリジナルはデバッグ版としてコンパイルしていた。
2. オリジナルはライブラリをスタティックリンクしていた。
3. オリジナルをコンパイルしたコンパイラは、最適化性能が著しく低かった(もしくは最適化を抑止した)。

このうち3.の可能性は低いと思います。
可能性として一番高いのは1.ですが、1.と2.の合わせ技かもしれません。

投稿日時 - 2009-03-29 02:03:59

あなたにオススメの質問