g++とgccの違いとは?LinuxにおけるC・C++コンパイラの使い分けを解説
Linux環境でC言語やC++のプログラムをコンパイルする際によく使われるのが、GNUコンパイラコレクションに含まれる「gcc」と「g++」です。どちらも同じGCC(GNU Compiler Collection)ファミリーに属しますが、扱う言語やリンク時の挙動が異なります。本記事では、それぞれの特徴と基本的な使い方を具体例とともに解説します。
g++とは
g++はGNU C++ Compilerのことで、Linux上でC++プログラムをコンパイルするために使用されるコンパイラです。拡張子が「.c」のファイルであっても「.cpp」のファイルであっても、どちらもC++のソースコードとして扱ってコンパイルする点が大きな特徴です。
C++プログラムをコンパイルする際の基本コマンドは以下の通りです。
g++ program.cpp -o filename
各引数の意味は次の通りです。
- program.cpp … コンパイル対象となるソースファイル名(.c または .cpp 拡張子)
- -o filename … 出力される実行ファイルの名前を指定するオプション
g++の使用例
次のような簡単なC++プログラムを用意します。
#include <iostream>
using namespace std;
int main() {
int a = 20;
cout << "The value of a : " << a;
return 0;
}
これをg++でコンパイルして実行すると、以下のように出力されます。
$ g++ -o main *.cpp $ ./main The value of a : 20
gccとは
gccはGNU C Compilerのことで、Linux上でC言語のプログラムをコンパイルするために使用されるコンパイラです。基本的には拡張子が「.c」のファイルをC言語のソースコードとして処理します。
Cプログラムをコンパイルする際の基本コマンドは以下の通りです。
gcc program.c -o filename
各引数の意味は次の通りです。
- program.c … コンパイル対象となるC言語のソースファイル名(.c 拡張子)
- -o filename … 出力される実行ファイルの名前を指定するオプション
gccの使用例
同様の処理を行うC言語のプログラムは次のように記述できます。
#include <stdio.h>
int main() {
int a = 20;
printf("The value of a : %d", a);
return 0;
}
gccでコンパイルして実行した結果は以下の通りです。
$ gcc -o main *.c $ ./main The value of a : 20
g++とgccの主な違いまとめ
- 扱う言語: gccは主にC言語向け、g++はC++向けのコンパイラとして動作します。
- ファイルの扱い: g++は「.c」「.cpp」どちらのファイルもC++としてコンパイルします。一方、gccは「.c」ファイルをCとして、「.cpp」ファイルをC++として自動判別します。
- ライブラリのリンク: g++は標準でC++標準ライブラリ(libstdc++など)を自動的にリンクしますが、gccではC++プログラムをコンパイルしてもこれらのライブラリがリンクされず、リンクエラーになることがあります。
このように、C++のプログラムをビルドする場合はg++を使うのが安全で確実です。C言語のみを扱うのであればgccで十分ですが、プロジェクトでCとC++が混在する場合には、g++で統一するのも一つの方法です。
-
DirectX11とDirectX12の違いを徹底解説!ゲーマーが知っておくべきポイント
DirectXは、ソフトウェアがマルチメディアコンテンツを描画し、グラフィックハードウェアと通信するために使用されるAPI(アプリケーションプログラミングインターフェース)のコレクションです。DirectXの主要な構成要素であるDirect3Dは、ソフトウェアとグラフィックスハードウェア間の通信を担っています。ハードウェアは製品ごとに異なるため、標準化された関数や呼び出しのライブラリを通じてグラフィックカードと通信することで、ゲーム開発を大幅にスピードアップできます。これは「ハードウェア抽象化」と呼ばれ、APIの最も重要な役割となっています。車に例えてみましょう。1台の車の運転ができれば、ほぼ
-
C#におけるstringとStringの違いは何ですか?
C#のstringとStringの違いC#プログラミングにおいて、stringとStringはどちらも同じ型を指しますが、その扱いには微妙な違いがあります。Stringは.NET FrameworkのクラスであるSystem.Stringを直接表すものであり、一方、stringはC#言語が用意しているSystem.Stringのエイリアス(別名)です。つまり、両者はコンパイル後にまったく同じものとして扱われます。基本的な使い方の例string str = Welcome!;このように文字列変数を宣言する際は、通常小文字のstringを使用します。使い分けの目安厳密なルールはありませんが、一般的