C言語のソースをコンパイルするとき、教科書では
ccと書かれているのに、現代のRHEL9やUbuntu LTSでは実体がgccになっています。これは歴史的経緯と互換性のための仕組みで、ccはgccへのシンボリックリンクとして提供されているためです。この記事では、ccコマンドの基本的な使い方、gccとの関係、よく使うオプション、そして実際のコンパイルから実行までの流れを解説します。
・ccコマンドはC言語ソースをコンパイルする標準コマンドです
・RHEL9/Ubuntu LTSではccはgccへのシンボリックリンクとして動作します
・
-oで出力ファイル名、-Wallで警告表示が基本オプションです・実行ファイルは
./を付けて起動しますでも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ccコマンドとgccの関係
RHEL9やUbuntu 22.04/24.04 LTSなど現代のLinuxディストリビューションでは、ccはgcc(GNU Compiler Collection)へのシンボリックリンクとして提供されています。実体を確認するには次のコマンドを実行します。
$ which cc /usr/bin/cc $ ls -l /usr/bin/cc lrwxrwxrwx 1 root root 3 Apr 7 10:00 /usr/bin/cc -> gcc
歴史的にUNIXのC言語コンパイラはcc(C Compiler)という名前でした。現代のLinuxでは互換性のためにこの名前が残されており、cc hello.cとgcc hello.cは全く同じ動作になります。
基本的な使い方
ccコマンドの書式は以下のとおりです。
cc [オプション] ソースファイル名
1. 基本コンパイル(出力ファイル名を指定)
もっとも基本的な使い方は、hello.cをコンパイルして実行ファイルhelloを作る例です。
$ cc -o hello hello.c $ ./hello Hello, World!
-oを省略するとデフォルトでa.outという名前の実行ファイルが生成されます。カレントディレクトリの実行ファイルを起動するため、必ず./を付けてください。
2. 警告を有効にしてコンパイル
実務では-Wallオプションを常に付けてコンパイルするのが鉄則です。潜在的なバグを事前に検出できます。
$ cc -Wall -o hello hello.c
警告なしでコンパイルが通れば成功です。
3. サンプルプログラムで確認する
簡単なサンプルプログラムhello.cを作成してコンパイルしてみましょう。
$ cat > hello.c <
int main(void) { printf("Hello, Linux! "); return 0; } EOF $ cc -Wall -o hello hello.c $ ./hello Hello, Linux!
応用・実務Tips
実務で頻出するオプションを以下にまとめます。
・-o ファイル名:出力する実行ファイル名を指定します・-Wall:主要な警告をすべて表示します
・-Wextra:追加の警告を表示します(-Wallと併用推奨)
・-g:デバッグ情報を埋め込みます(gdb使用時に必要)
・-O2:最適化レベル2でコンパイルします(本番ビルドで使用)
・-c:リンクせずオブジェクトファイル(.o)のみ生成します
・-lm:数学ライブラリをリンクします(sin、cos等を使う場合)
トラブルシュート・エラー対処
ccコマンドが見つからないとき
最小構成インストールではccコマンドがインストールされていない場合があります。RHEL9系/Ubuntu LTSそれぞれのインストール方法は次のとおりです。
RHEL9/AlmaLinux9/Rocky Linux9の場合:
# dnf install -y gcc
Ubuntu 22.04/24.04 LTSの場合:
$ sudo apt install -y build-essential
build-essentialパッケージにはgcc、g++、make等の開発に必要なツールがまとめて含まれています。
「undefined reference to」エラーが出るとき
数学関数(sin、cos等)を使うと「undefined reference to `sin'」のようなエラーが出ることがあります。-lmオプションでmath.hライブラリを明示的にリンクすることで解決します。
$ cc -Wall -o calc calc.c -lm
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 基本コンパイル | cc -o hello hello.c |
| 警告を有効にしてコンパイル | cc -Wall -o hello hello.c |
| デバッグ情報付きコンパイル | cc -g -o hello hello.c |
| 最適化ビルド | cc -O2 -o hello hello.c |
| オブジェクトファイルのみ生成 | cc -c hello.c |
| 数学ライブラリをリンク | cc -Wall -o calc calc.c -lm |
| gccのインストール(RHEL9系) | dnf install -y gcc |
Linuxのコンパイル環境を「正しく理解して」使っていますか?
ccコマンドの仕組みを知ることは、Linuxサーバー運用の基本姿勢と直結しています。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:mtools
- 前のページへ:restoreコマンドでバックアップからファイルを復元する方法|dumpとの使い方も解説
- この記事の属するカテゴリ:Linuxコマンド・LinuxコマンドA-E・パッケージ管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます