Linuxでg++コンパイラを使う方法:インストールから基本操作まで徹底解説
C++開発において、コンパイル作業は欠かせないプロセスの一つです。効率的かつシンプルに扱えて、豊富な機能を備えたコンパイラがあれば、開発はぐっと快適になります。そこで活躍するのが「g++」コンパイラです。g++はコマンドラインから直接操作でき、さまざまなコンパイルニーズに柔軟に対応できる強力なツールです。本記事では、g++の導入方法から基本的な使い方まで、初心者にもわかりやすく解説します。
g++とは?
g++は、コマンドライン上で動作するC++コンパイラです。Free Software Foundationによってリリースされており、GCC(GNU Compiler Collection)の一部として提供されています。C++のような高水準プログラミング言語で書かれたソースコードを、コンピュータが理解できる低水準の言語へと変換し、実行可能ファイルを生成する役割を担います。
g++のインストール方法
多くのLinuxディストリビューションでは、g++は初期状態でインストールされています。ただし、お使いのディストリビューションに含まれていない場合は、以下の手順を参考に、主要なディストリビューションへのインストール方法を確認しましょう。
Ubuntu / Debianの場合: aptパッケージマネージャーを使用してインストールします。
sudo apt update && sudo apt install g++
Fedora / CentOSの場合: yumパッケージマネージャーを使用してインストールします。
sudo yum install g++
また、pkgs.orgからパッケージを直接ダウンロードすることも可能です。ダウンロードにはCurlツールを使用します。
sudo curl https://ftp.de.debian.org/debian/pool/main/g/gcc-defaults/g++_10.2.1-1_amd64.deb -O
ダウンロードしたパッケージは、dpkgユーティリティを使ってインストールできます。
sudo dpkg -i g++.deb
g++が正しくインストールされているかを確認するには、--versionオプションを実行します。
g++ --version
g++の基本的な使い方
g++のインストールが完了したら、さっそくコンパイルに活用してみましょう。
まずは、--helpオプションでマニュアルを確認しておくと便利です。
g++ --help
コンパイラやその設定に関する詳細情報を確認したい場合は、--dumpspecsオプションを使うことで、コンパイラに組み込まれたspec文字列を表示できます。
g++ --dumpspecs
これにより、g++の持つ機能や各種オプションの概要を把握できます。
基本的なコンパイル手順
g++で基本的なコンパイルを行うには、次の形式を使用します。
g++ [ファイル名]
たとえば「main.cpp」というファイルがある場合、以下のコマンドでコンパイルできます。
g++ main.cpp
コンパイルされた実行ファイルは、デフォルトで「a.out」という名前になります。以下のコマンドで実行しましょう。
./a.out
出力ファイル名を指定する
実行ファイルの名前を指定したい場合は、-oオプションを使用します。
g++ -o [出力ファイル名] [コンパイル対象ファイル]
たとえば、実行ファイルの名前を「main」に指定したい場合は、次のように入力します。
g++ -o main main.cpp
オブジェクトファイルをリンクする
複数のオブジェクトファイルをリンクして一つの実行ファイルを作成する場合は、次の形式を使用します。
g++ -o [出力ファイル名] [obj1.o] [obj2.o]
たとえば、「object-1.o」と「object-2.o」をリンクして「main」という実行ファイルを作成する場合は、以下のように入力します。
g++ -o main object-1.o object-2.o
ルートディレクトリを指定する
ライブラリやヘッダーファイルが配置されているルートディレクトリを指定したい場合は、--sysrootオプションを使用します。
g++ -o [出力ファイル名] --sysroot [ディレクトリ] main.cpp
「-Wall」で警告メッセージをすべて表示する
コードの品質を保つためには、コンパイル時にすべての警告メッセージを確認することが重要です。幸い、g++にはこの機能が標準で組み込まれています。
すべての警告メッセージを表示するには、-Wallオプションを使用します(「W」は大文字である点に注意してください)。
g++ -o main main.cpp -Wall
静的ライブラリの作成方法
ライブラリの作成は、適切なコードエディタを選ぶことと同じくらい、ソフトウェア開発において重要な要素です。arコマンドなどのテクニックを組み合わせれば、g++を使って簡単にライブラリをコンパイルできます。
まず、オブジェクトファイルをコンパイルします。
g++ -c -o obj.o main.cpp
次に、arユーティリティに「rcs」オプションを付けて、アーカイブ(.a)ファイルを作成します。
ar rcs archive.a obj.o
最後に、作成したライブラリをg++で使用します。
g++ -o final example.cpp archive.a
よくある質問
1. .cファイルもコンパイルできますか?
技術的には可能です。ただし、g++は主にC++用のコンパイラとして設計されているため、.cファイルのコンパイルにはgccユーティリティの方が適しています。また、g++で.cファイルをコンパイルすると、C++ファイルとして扱われる点にも注意が必要です。
どうしてもg++で.cファイルをコンパイルしたい場合は、-cオプションを使用します。
g++ -c example.c -o example
2. C++コンパイラとしてgccをそのまま使ってはいけないのはなぜ?
gccをC++コンパイラとして使用すること自体は問題ありません。ただし、g++はgccをベースにC++に特化させて調整されたコンパイラであり、C++コードを扱うプログラマー向けに追加の機能や特徴を備えています。そのため、C++開発ではg++を使用するのがより合理的です。
3. 最新バージョンは何ですか?
本記事の執筆時点(2022年第1四半期)での最新バージョンは11.2.0で、2021年7月にリリースされました。その後も新しいバージョンが公開されている可能性があるため、最新情報はGCCの公式サイトでご確認ください。
-
Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現
Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです
-
Linuxのssコマンドでネットワーク接続を監視する方法【基本から実践テクニックまで】
Linuxを使っていると、ネットワークの状態をもっと詳しく知りたい場面に必ず出会います。そうしたニーズに応えられるツールは数多く存在しますが、中には扱いが複雑なものもあります。ssコマンドは多くのLinuxマシンに標準でインストールされているため、その使い方を知っておくと非常に便利です。ssコマンドとは?2文字だけのコマンド名は一見謎めいて見えますが、実際はとてもシンプルです。多くのLinux/Unixコマンドと同じように、コマンド名はその機能を表す略語になっています。「ss」は「Socket Statistics(ソケット統計)」の略です。Socket Statisticsは、従来のnets