【C言語】gccでコンパイルする方法

【C言語】gccでコンパイルする方法

当ページのリンクには広告が含まれています。

記事の文字数:2237

C言語のGNUコンパイラ(gcc)の使い方を、初心者向けに丁寧に解説します。gccのインストール方法、よく使われるコンパイルオプション、実践的な使用例まで紹介します。これからC言語を始めたい方や、gccを使いこなしたい方は必見です。


スポンサーリンク

C言語は、1970年代初頭にベル研究所でデニス・リッチーによって開発された、歴史ある高性能なプログラミング言語です。ただし、C言語はインタプリタ型ではなく、記述したコードをコンパイルして実行形式に変換する必要があります。このコンパイル作業を担うのが「コンパイラ」です。その中でも、オープンソースで広く普及している代表的なコンパイラが「gcc(GNU Compiler Collection)」です。

本記事では、C言語の基本とともに、gccの役割や使い方についても詳しく解説し、初学者が最初の一歩を踏み出すための手助けをします。

gccはC言語のコンパイラ

gcc(GNU Compiler Collection)は、GNUプロジェクトによって開発されたコンパイラ群です。もともとはC言語専用のコンパイラとして登場しましたが、現在ではC++、Objective-C、Fortran、Ada、Go、Dなど、数多くの言語に対応しています。特にLinuxやUNIX系OSでは事実上の標準コンパイラとして利用されており、フリーでありながら高い性能と信頼性を持ち合わせています。

gccは、単にソースコードをバイナリに変換するだけでなく、デバッグ情報の付加、最適化、静的解析、警告表示など、さまざまな機能を備えており、開発を効率化するための重要なツールです。

gccのインストール

ほとんどのLinuxディストリビューションでは、パッケージマネージャを利用することで簡単にインストールできます。

Debian/Ubuntu系の場合

以下にDebian/Ubuntuの場合のインストール例を示します。

インストールコマンド
sudo apt update
sudo apt install gcc

C言語プログラムの基本構造

以下は、C言語で書かれた最も基本的なプログラム「Hello, world!」です。

hello.c
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}

このコードは、「標準出力」に文字列を出力し、正常終了を意味する「0」を返しています。ファイル名は hello.c として保存しましょう。

gccでのコンパイル方法

端末(ターミナル)を開き、保存したファイルがあるディレクトリに移動して、次のように入力します。

コンパイル
gcc hello.c -o hello

このコマンドは hello.c をコンパイルして、実行可能ファイル hello を作成します。-o オプションは出力ファイル名を指定するためのものです。作成されたファイルを実行するには以下のようにします。

実行
./hello

以下のようにHello, world!が表示されればOKです。

Hello, world!

よく使うgccオプション

gccには多くのオプションがあり、用途に応じて適切に使い分けることで、より安全かつ効率的な開発が可能になります。

オプション説明
-o出力ファイル名を指定
-Wall構文に関するすべての警告メッセージを表示
-Wextraより多くの警告を有効にする
-gデバッグ情報を生成(gdbと併用)
-O2最適化レベル2(パフォーマンス向上)
-std=c99C言語のバージョンを指定(例:C99)

実装例で理解するgccオプションの使い方

以下のような簡単なCプログラム calc.c を例に、各オプションの効果を見てみましょう:

#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 4);
printf("3 + 4 = %d", result);
return 0;
}

1. -o(出力ファイル名の指定)

Terminal window
gcc calc.c -o calculator
./calculator

a.out ではなく calculator という実行ファイルが作成されます。

2. -Wall-Wextra(警告表示)

たとえば、未使用の変数があるときに警告してくれます。

#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int unused_function() {
int x = 10; // xが使われていない
return 0;
}
int main() {
int result = add(3, 4);
printf("3 + 4 = %d", result);
return 0;
}
Terminal window
gcc -Wall -Wextra calc.c -o calculator

→ 「未使用の変数x」などの警告が表示され、バグの早期発見につながります。

3. -g(デバッグ情報の付加)

Terminal window
gcc -g calc.c -o calculator

gdb を使ってブレークポイントを設定し、変数の中身をステップ実行で確認可能になります。

4. -O2(最適化)

Terminal window
gcc -O2 calc.c -o calculator

→ 実行速度が改善される可能性があります(大規模なコードほど効果が顕著)。

5. -std=c99(Cの規格を指定)

Terminal window
gcc -std=c99 calc.c -o calculator

→ たとえば関数内での変数定義をブロック単位で許可するなど、モダンな記述スタイルが使えます。

例えば、次のようなコマンドで安全かつ最適なビルドが可能です。

Terminal window
gcc -Wall -Wextra -g -O2 -std=c99 calc.c -o calculator

gccコマンドのまとめ

  • gccはC言語をコンパイルするための代表的なツールで、Linuxを中心に幅広く利用されている。
  • gcc hello.c -o hello のようなコンパイルコマンドで、実行ファイルを作成できる。
  • よく使うgccオプション(-Wall, -g, -O2 など)の意味と効果を理解して、適切に使い分けよう。

C言語とgccの基本を理解することは、ソフトウェア開発の深い理解への第一歩です。C言語は初心者にとってもプロフェッショナルにとっても非常に学びがいのある言語です。 gccを使ってコンパイルを繰り返すことで、エラーメッセージへの対応力やデバッグスキルも自然と向上します。今後は以下のようなトピックについても学習を進めていくとよいでしょう。

  • Makefileによるビルドの自動化
  • gdbによるデバッグ手法
  • 静的解析ツール(例えばclang-tidy)との連携
  • 複数ファイルによるプロジェクト構成とリンク方法
  • 標準ライブラリ以外の外部ライブラリの活用

これらのスキルを身につけることで、C言語によるより高度で実践的なソフトウェア開発が可能になります。


以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top