質問: cygwinに付属しているg++コマンドについて こんにちは。 cygwinに付属しているc++コンパイルコマンドのg++について、いくつか質問させて下さい。 ・g++はc++だけでなく、cのソースファイルもコンパイルできるので、cのプログラムを開発するときは、gccは必要なく、g++だけでよいと思うのですが、どうしてgccが存在するのでしょうか? g++だけで十分ですよね? ・bashなどのコマンドライン上で g++ -print-libgcc-file-name と入力すると、コンパイラのコンパニオンライブラリ名を表示されるようなのですが、 コンパイラライブラリって何なのでしょうか? ちなみに自分の環境では、 /bin/../lib/gcc/i686-pc-cygwin/4.3.4/libgcc.a と表示されました。 ・-timeオプションを付けてg++でcソースファイルをビルドすると、以下のようになりました。 $ g++ -time "test.c" # cc1plus 0.03 0.01 # as 0.00 0.01 # collect2 0.00 0.08 1つめの時間と、2つめの時間は、それぞれ何を意味するのでしょうか? ・g++で使えるコマンドラインオプションとgccで使えるコマンドラインオプションは、 一緒のような気がするのですが、g++でしか使えないコマンドラインオプションってありますか? 以上です。 よろしくお願い致します。
回答: >・g++はc++だけでなく、cのソースファイルもコンパイルできるので、cのプログラムを開発するときは、gccは必要なく、g++だけでよいと思うのですが、どうしてgccが存在するのでしょうか? c++は元はcをベースにしてるとはいえ、細かい点で言語仕様が異なるところがあります(もちろんオブジェクト指向言語として拡張された分はcには存在しませんが)。 ですのでcのソースをcコンパイラでコンパイルするのと、c++コンパイラでコンパイルするのは全く同じではないです。 >・bashなどのコマンドライン上で libgcc.aについてはgccでコンパイルした実行ファイルで使用されるサブルーチンなどが納められているライブラリです。 >1つめの時間と、2つめの時間は、それぞれ何を意味するのでしょうか? 読んだそのまま。 cc1plus(c++のソースからアセンブラのソース(アセンブラソースでなくて中間コードだったかも)を生成するコマンド) as(アセンブラソースからオブジェクトファイルを生成するコマンド) それぞれがかかった時間です。 >・g++で使えるコマンドラインオプションとgccで使えるコマンドラインオプションは、 > 一緒のような気がするのですが、g++でしか使えないコマンドラインオプションってありますか? 調べてホームページで公開されている方もいらっしゃるので探してみてください。 gccやg++のマニュアル読めば解ることだけど。