• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語をコンパイル後の膨大なファイルについて)

C言語をコンパイル後の膨大なファイルについて

このQ&Aのポイント
  • C言語のソースファイルをコンパイルする際に、膨大な数のファイルが生成される現象について質問しています。
  • C言語のコンパイル結果として、objファイルやexeファイル以外にも、多くのフォルダやファイルが作成されることに疑問を持っています。
  • 既存のC言語のソースコードをC++でコンパイルして実行した結果、予想以上に多くのファイルが生成されることに驚いています。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

とりあえず全部は載ってませんがこの辺を Visual C++ プロジェクトに対して作成されるファイルの種類 http://msdn2.microsoft.com/ja-jp/library/3awe4781(VS.80).aspx

red_neck
質問者

お礼

sakusaker7様 有難うございました. お蔭様で、各ファイルの意味がすこしですがわかってきました. 深くお礼を申し上げます. でも、なんと沢山の数のファイルでしょう!

その他の回答 (7)

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

結局環境は教えていただけませんでしたが... > Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat に見つかりました. から察するに、Visual Studio 2005なのでしょう > 尚、このようにパスを設定しなければ、CLは動作しません. Visual Studio 2005であれば、スタートメニューから Microsoft Visual Studio 2005 → Visual Studio Tools → Visual Studio 2005 コマンド プロンプト とたどるのが普通の使い方です。 もちろん、自分でvcvars32.batを呼んでもかまいませんが。

red_neck
質問者

お礼

有難うございました.

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

> その場合、パスを設定するバッチ・プログラムがどこにあるかを教えていただけませんか.  正確な環境を補足してください。(バージョンまで含めて)

red_neck
質問者

お礼

C#をコマンド・ラインからコンパイルするときに使っているVSVARS32.batを実行すると、次のように表示されるのに気付きました. いまごろになってやっと気付くなんて、頭の程度がわかります. お恥ずかしい限りです.. Setting environment for using Visual Studio tools. If you also have Visual C++ 6.0 installed and wish to use its tools from the command line, run vcvars32.bat for Visual C++ 6.0. 多分、このバッチを使えばOKだろうと考えて、探して見ましたところ、 Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat に見つかりました. 早速使用してみたら、うまくコンパイルできるようになりました. 尚、このようにパスを設定しなければ、CLは動作しません. 以上、ご報告まで

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.6

#3です。 少し補足です。 今回はDebug版ということですが、 コンパイル時の生成物はDebug版だけではありません。 むしろ、製品などで出荷した場合で、その製品に不具合が発生した場合 などにその原因を調査する為に、使うことの方が多いです。 もし、製品などのRelease版でこれらの情報がある場合には、 取っておいて損は無いと思います。

red_neck
質問者

お礼

再度のご教示有難うございました. お蔭様で、其のあたりの事情がすこしづつわかってきました. お礼を申し上げます.

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.5

debug版は、サイズが大きかったり遅かったりの外にも、 第三者への配布にライセンス上の制限があるとか、 デメリットも多いので、開発中でなければreleaseにした方がいいです。

red_neck
質問者

お礼

MrBan様 有難うございました. 何も知りませんので、debug版とrelease版の区別もわかりませんでした. お蔭様で、勉強が出来ました. 深くお礼を申し上げます.

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

コマンドラインからコンパイルすれば、このようなことは起きません。具体的には、 cl Ex_001.c とすれば、おそらくEx_001.objとEx_001.exeだけが生成されるはずです。 ところで、 > C++でコンパイル出来ました. とのことですが、おそらくC++ではなくCとしてコンパイルされていると思います。C++としてコンパイルするには、拡張子を.cppや.ccにするか、それ用のコンパイルオプションを指定する必要があります。

red_neck
質問者

お礼

> C++でコンパイル出来ました おっしゃるとおりです. Cとしてコンパイルされています. 私の質問の書き方が不備で恐縮です. 「ANSI Cのソースを、C++のコンパイラの上位互換性を利用して、Cとしてコンパイルしました」と書くべきでした. 全く恐縮です. また、ソース・ファイル名のサフィックスはCです.cppやccではありません. ご教示、お礼申し上げます. また、コマンド・ラインからコンパイルしたらとのご教示有難うございました. その場合、パスを設定するバッチ・プログラムがどこにあるかを教えていただけませんか.  C#をコマンド・ラインからコンパイルするときには、Program Filesの奥にあるvcvar32.batと言うのを使っています. そのうち探そうと思いながら、のびのびになっています. 勝手なお願いで恐縮です. よろしくお願いします.

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

とりあえず、この様なご質問をされる場合には環境を書きましょう。 全てのコンパイラが同じものを出力するわけではありません。 今回はVCのようですが、 コンパイラがコンパイル時に生成する生成物は、 主にそのアプリケーションなどがクラッシュした時などに どの部分でクラッシュしたかの特定するのに使用したりします。 WindowsであればWinDbgなどの解析ツールを使用して、 原因を調査したりします。 出力されるファイルには以下のような物があります。 ・作成したモジュールのシンボルテーブル(関数名の一覧など) ・モジュールのアセンブリコード(文字通り) ・ビルド情報(デバッガのコンパイル時のメッセージ) ・リソースバイナリ(リソースファイルのバイナリ) ・モジュールマップファイル(関数の相対ロードメモリの位置など) など これらはVCのプロジェクトの設定で制御できるので、 しらべて必要なものを出力すると良いと思います。 いらなければ消しても構いません。

red_neck
質問者

お礼

ご教示、有難うございました. 環境の説明不備の件、今後気をつけます.

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

開発段階で必要になるファイルですね。 開発終了で2度とソースをいじらないなら一度コンパイルして実行ファイルを作れば他のファイルは必要ありません。 ただdebugフォルダに出来るのはデバッグバージョンなのでデバッグ用のコードが埋め込まれファイルサイズが大きくなってます。 開発終了ならリリースバージョンにしましょう。

red_neck
質問者

お礼

よくわかりました. これで、exeファイル以外は、安心して消してしまいます. 有難うございました.

関連するQ&A