g++ コマンドは、GNU Compiler Collection (GCC) に含まれる C++ コンパイラです。
C++ ソースコードをオブジェクトファイルや実行可能ファイルに変換するために利用されます。gcc と似ていますが、標準で C++ ライブラリをリンクする点が異なります。
構文(Syntax)
g++ [オプション] <ソースファイル>... -o <出力ファイル>
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-o <file> | 出力ファイル名を指定 | g++ main.cpp -o main |
-c | コンパイルのみ行いオブジェクトファイルを生成 | g++ -c main.cpp |
-Wall | 一般的な警告を有効化 | g++ -Wall main.cpp -o main |
-Werror | 警告をエラーとして扱う | g++ -Werror main.cpp |
-O0 / -O1 / -O2 / -O3 | 最適化レベルを指定 | g++ -O2 main.cpp -o main |
-g | デバッグ情報を付加 | g++ -g main.cpp -o main |
-std=c++11 など | 使用する C++ 標準を指定 | g++ -std=c++17 main.cpp -o main |
-I<dir> | インクルードディレクトリを追加 | g++ -I./include main.cpp -o main |
-L<dir> | ライブラリディレクトリを追加 | g++ -L./lib main.cpp -lmylib -o main |
-l<name> | ライブラリをリンク | g++ main.cpp -lpthread -o main |
実行例
シンプルなコンパイル
g++ hello.cpp -o hello
./hello
複数ファイルをコンパイル
g++ main.cpp util.cpp -o program
オブジェクトファイルを生成してリンク
g++ -c main.cpp
g++ -c util.cpp
g++ main.o util.o -o program
デバッグ情報を付加
g++ -g main.cpp -o main
gdb ./main
最適化してコンパイル
g++ -O2 main.cpp -o main
C++17 準拠でコンパイル
g++ -std=c++17 main.cpp -o main
スレッドライブラリをリンク
g++ thread_example.cpp -lpthread -o thread_example
エラー例(ソースが存在しない場合)
g++ notfound.cpp -o test
出力例:
g++: error: notfound.cpp: No such file or directory
g++: fatal error: no input files
compilation terminated.
関連コマンド
gcc: C コンパイラ(標準で C++ ライブラリをリンクしない)。make: プログラムのビルドを自動化するツール。ld: リンカ。
備考
g++は C++ 専用のフロントエンドで、リンク時に自動的に C++ 標準ライブラリ(libstdc++)をリンクします。gccで C++ をコンパイルすることも可能ですが、その場合は明示的に-lstdc++を指定する必要があります。-std=c++XXオプションを指定して、使用する C++ 標準(C++11 / 14 / 17 / 20 / 23 など)を選ぶのが一般的です。

コメント