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と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++の動作の違い
- gccは,
*.cファイルをC言語として,*.cppファイルをC++としてコンパイル - g++は,
*.cファイルも*.cppもC++としてコンパイル - g++は,リンクの時にstd C++ライブラリをリンク(gccはしない)
ccとは
ccコマンドの意味はプラットフォームによって異なる
- Solarisでは,
CCはSun C++ compilerの名前 - Solarisでは,
ccはSun C compilerの名前 - Linuxでは,(あれば)
CCはおそらくg++へのリンク - Linuxでは,
ccはgccへのリンク
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.