cc, gcc, g++の違い

C++は初心者なので調べたことをメモ.

C++コンパイルに使うcc, gcc, g++コマンドの違いについて(Ubuntu 18.04)

元ネタ:

c++ - Difference between CC, gcc and g++? - Stack Overflow

c++ - What is the difference between g++ and gcc? - Stack Overflow

まず,gccとg++の違い.これはC用とC++用の違いである.

  • gccは,GNU C Compilerの意味
  • g++は,GNU C++ Compilerの意味

なお,gccとg++はともにGNU Compiler Collection(Wikipedia)のcompiler-driver(コンパイラを呼び出すプログラム).

ただし,実体としては,g++はgccにオプションを追加して呼び出すことと同じ.

どちらも,ファイルタイプによって実際にどのコンパイラ (cc1, cc1plus.順にC,C++コンパイラ) を呼び出すかを自動で決定する(-x languageで上書き可能). しかし,g++とgccは,デフォルトでリンクするライブラリなどに違いがある.

g++gcc -xc++ -lstdc++ -shared-libgccと同等.これは,-vオプションを付けることで確認できる.

オプションの意味 (Using the GNU Compiler Collection (GCC): Link Options)

  • -xc++は,これ以降に書かれたオプションをc++リンカに渡す.
  • -lstdc++は,リンクの時にstdc++ライブラリを探す.
  • -shared-libgccは,sharedまたはstaticバージョンのlibgccを使う(よくわからない).

結局,gccとg++の動作の違い

ccとは

ccコマンドの意味はプラットフォームによって異なる

  • Solarisでは,CCはSun C++ compilerの名前
  • Solarisでは,ccはSun C compilerの名前
  • Linuxでは,(あれば)CCはおそらくg++へのリンク
  • Linuxでは,ccgccへのリンク

Ubuntu 18.04での結果.なおCCは無かった.

$ sudo update-alternatives --config cc
There is only one alternative in link group cc (providing /usr/bin/cc): /usr/bin/gcc
Nothing to configure.