C言語は、プログラミングの基礎をしっかり身につけるのに最適な言語です。
特にLinux環境は、大学の授業や実務の現場で広く使われており、環境構築でつまずくと授業の内容に追いつけなくなることもあります。
本講座では、LinuxでのC言語環境構築から動作確認、トラブル対処までを一気通貫で解説し、授業が始まる前に安心できる状態になることを目指します。
C言語環境構築の全体像
LinuxでC言語を学ぶメリット

LinuxでC言語を学ぶことには、単にコンパイルができるだけではないいくつかの大きなメリットがあります。
まず、Linux自体がC言語で書かれている部分が多く、OSとC言語の距離が非常に近いことが挙げられます。
そのため、プログラムがどのようにOSとやり取りしているかを実感しやすい環境です。
さらに、大学や専門学校の授業、研究室、そして多くの開発現場では、Linuxサーバを使った開発が一般的です。
授業でLinuxを前提とした演習が行われることも多く、自分のPCや仮想環境でLinuxを用意しておくと予習・復習がしやすくなります。
また、Linuxは標準でターミナルやコンパイラ、ビルドツールなどが用意しやすく、追加の費用がかからない点も学生にとって大きな利点です。
コンパイルや実行をコマンドで行うことで、プログラミングだけでなく、システム操作の基礎力も同時に身につくため、就職活動でも有利になりやすいです。
授業前に準備しておくべき環境チェック

授業が始まる前に、次のようなポイントを確認しておくと、つまずきにくくなります。
ここでは、最低限チェックしておきたい項目を文章で整理します。
まず、Linux環境そのものが安定して動作しているかを確認します。
物理PCにLinuxをインストールしている場合は、OSが問題なく起動するか、ログインできるかを確認します。
Windows上で仮想環境(例: VirtualBox、WSL(Windows Subsystem for Linux))を使っている場合は、そのLinuxターミナルを開いて、コマンドが実行できるかどうかを確かめます。
次に、インターネットに接続できるかどうかも重要です。
gccなどのコンパイラや開発ツールは、パッケージマネージャを通してインストールすることが多いため、オンライン環境が前提になることが多いからです。
さらに、授業で使う予定のLinuxディストリビューション(例: Ubuntu、Debian、CentOS、Fedora)を確認し、自分の環境と合わせておくと説明と画面が一致し、理解しやすくなります。
授業で配布される資料に「Ubuntu前提」などの記載があれば、できる限り同じ系統のディストリビューションを用意しておきましょう。
最後に、ターミナルの基本操作(コマンド入力、上下キーで履歴参照、Tab補完)だけは事前に軽く慣れておくと、コンパイルや実行時に焦らずに済みます。
必要なソフトウェア一覧

C言語の学習に必要なソフトウェアは、それほど多くありませんが、役割を理解しておくと構築作業がスムーズになります。
代表的なものを表に整理します。
| 用途 | ソフトウェア名 | 役割・概要 | 必須度 |
|---|---|---|---|
| Cコンパイラ | gcc | Cソースコードをコンパイルして実行ファイルを生成する | ★必須 |
| ビルドツール | make | 複数ファイルのコンパイルやリンクを自動化する | ★必須(授業により) |
| テキストエディタ | vi、vim、nano | ターミナル上でソースコードを編集する | ★必須 |
| GUIエディタ/IDE | Visual Studio Code、CLionなど | コード補完やデバッグを支援する統合開発環境 | ☆推奨 |
| デバッガ | gdb | 実行中プログラムの挙動を詳細に調査する | ☆推奨 |
Linuxでは、これらの多くが標準リポジトリから簡単にインストールできます。
特にgccとmake、そして何らかのエディタが揃っていれば、授業で困ることはほとんどありません。
Visual Studio CodeなどのIDEは、コード補完やデバッグのしやすさから、授業の理解を助ける便利ツールとして導入を検討すると良いでしょう。
LinuxでのCコンパイラ(gcc)インストール手順
Debian系(Ubuntu)でのgccインストールコマンド

UbuntuやDebianといったDebian系Linuxでは、aptというパッケージマネージャを使ってgccをインストールします。
授業でもこの手順が前提として説明されることが多いです。
まず、パッケージ情報を最新状態に更新します。
sudo apt update # 利用可能なパッケージ情報を最新状態に更新
次に、gccを含む開発ツール一式をインストールします。
Ubuntuではbuild-essentialというメタパッケージを入れるのが一般的です。
sudo apt install build-essential # gcc, g++, make など開発に必要なツールをまとめてインストール
インストールが終わったら、gccが利用可能かどうかを確認します。
gcc --version # gccのバージョン情報を表示
gcc (Ubuntu 13.2.0-23ubuntu3) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
このようにバージョン情報が表示されれば、gccのインストールは完了です。
Red Hat系(CentOSなど)でのgccインストールコマンド

Red Hat系ディストリビューション(CentOS、Rocky Linux、AlmaLinux、Fedoraなど)では、dnfまたはyumを使ってgccをインストールします。
バージョンによってコマンドが少し異なりますが、考え方は同じです。
まず、パッケージ情報を更新します。
# Fedora, 新しめのRHEL系
sudo dnf update
# 古いCentOSなど
sudo yum update
次に、開発ツール一式をインストールします。
Red Hat系では"Development Tools"というグループパッケージでまとめて導入できます。
# Fedora, 新しめのRHEL系
sudo dnf groupinstall "Development Tools"
# 古いCentOSなど
sudo yum groupinstall "Development Tools"
インストール後にバージョンを確認します。
gcc --version
想定される出力は次のようになります。
gcc (GCC) 11.4.1 20240930 (Red Hat 11.4.1-1)
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
バージョン番号が表示されれば、gccの導入は成功です。
gccのバージョン確認方法とエラー対処

gccが正しくインストールされているかどうかは、gcc --versionコマンドで確認できます。
このコマンドを入力して何も表示されない、あるいはcommand not foundと表示される場合は、環境に問題があります。
代表的なエラーと対処法をまとめます。
| 症状(エラーメッセージ) | 主な原因 | 対処の方向性 |
|---|---|---|
gcc: command not found | gccパッケージがインストールされていない | 本記事の手順でgccをインストールする |
bash: gcc: command not found | PATHにgccのパスが通っていない(特殊な環境) | which gccで場所を確認 |
実行でPermission denied | 実行権限が付与されていない | chmod +x a.outなどで権限付与 |
ターミナルで次のように入力すると、gccがどこにインストールされているか確認できます。
which gcc
/usr/bin/gcc
パスが表示されれば、その場所にgcc実行ファイルが存在します。
もし何も表示されない場合は、インストールがまだ行われていない、またはPATH設定に問題がある可能性が高いです。
C言語開発に必要なエディタとIDE環境
Linux標準エディタ(vi, nano)の基本

Linuxでは、C言語のソースコードはテキストファイルとして保存します。
そのため、テキストエディタの基本操作を知っておくことが重要です。
特にvi(vim)とnanoは、ほとんどのLinux環境で利用できるため、授業でもよく登場します。
vi(vim)の最低限の使い方
viはモード切り替え型エディタで、最初は戸惑いやすいですが、基本だけ押さえれば十分使えます。
代表的な操作は次の通りです。
- ファイルを開く:
vi main.c - 挿入モードに切り替え(編集開始):
iキー - ノーマルモードに戻る:
Escキー - 保存して終了: ノーマルモードで
:wq+ Enter - 保存せず終了: ノーマルモードで
:q!+ Enter
挿入モードとノーマルモードの2つを意識することが最初の関門ですが、授業でviが指定されることも多いため、簡単な編集ができる程度には慣れておくと安心です。
nanoの最低限の使い方
nanoは画面の下部にショートカットが表示されており、直感的に操作しやすいエディタです。
初心者が使いやすいという意味では、最初の一歩としてnanoを選ぶのも良い方法です。
- ファイルを開く:
nano main.c - 編集はそのままタイプすればOK(モード切り替えなし)
- 保存:
Ctrl + O - 終了:
Ctrl + X
画面下部に^O Write Outのような表示があり、^はCtrlキーを意味します。
viが苦手な場合でも、nanoを使えば授業の演習でソースコードを書くことは十分可能です。
Visual Studio CodeでのC言語開発設定

Visual Studio Code(VS Code)は、軽量ながら高機能なエディタで、Linuxでも快適に動作します。
C/C++拡張を追加することで、コード補完、シンタックスハイライト、簡易デバッグなどが利用できるようになり、授業の理解にも役立ちます。
VS Codeのインストール
ディストリビューションによって手順は異なりますが、代表的な方法としては次のようなものがあります。
- Ubuntu系:
.debパッケージを公式サイトからダウンロードしてインストール - Fedora系:
.rpmパッケージを利用 - あるいは
snapやflatpakでインストール
詳細なインストール方法は、公式サイト(https://code.visualstudio.com/)のLinux向け説明が最新かつ正確ですので、そちらを参照してください。
C/C++拡張機能の導入
VS Codeを起動したら、左側の拡張機能アイコンをクリックし、次のように操作します。
- 検索欄に
C/C++と入力 - Microsoft製の「C/C++」拡張を選択
- 「インストール」ボタンをクリック
これにより、C言語コードに対する構文チェックや補完機能が利用可能になります。
ターミナル統合によるコンパイル
VS Codeでは、内蔵ターミナルを使ってコンパイルや実行が可能です。
メニューから「ターミナル」→「新しいターミナル」を選ぶと、エディタ下部にターミナルが開きます。
ここで、通常のターミナルと同じようにgccコマンドを実行できます。
gcc main.c -o main # main.cをコンパイルしてmainという実行ファイルを生成
./main # プログラムを実行
VS Code上で完結して作業できるため、エディタとターミナルを行き来する手間が減り、授業の演習効率が向上します。
Makefileを使った効率的なビルド環境

C言語のプログラムが1ファイルだけであれば、毎回gcc main.c -o mainのように手動でコンパイルしても問題ありません。
しかし、複数ファイルに分割して開発するようになると、手打ちでコンパイルコマンドを管理するのは非常に手間です。
そこで登場するのがmakeとMakefileです。
Makefileには、どのソースファイルをどのようにコンパイルするかを記述し、makeコマンドを実行するだけで自動的にビルドが行われるようにします。
シンプルなMakefileの例
ここでは、授業でもよく登場する2ファイル構成(main.cとsub.c)を例に、シンプルなMakefileを紹介します。
/* main.c: メイン関数を持つファイル */
#include <stdio.h>
/* sub.c で定義されている関数のプロトタイプ宣言 */
void print_message(void);
int main(void) {
print_message(); // 別ファイルの関数を呼び出す
return 0;
}
/* sub.c: 別ファイルに分けた関数 */
#include <stdio.h>
void print_message(void) {
printf("Hello from sub.c!\n");
}
これらをビルドするためのMakefileは次のようになります。
# Makefile: main.c と sub.c をビルドする設定ファイル
# 使用するコンパイラ
CC = gcc
# コンパイル時のオプション
CFLAGS = -Wall -Wextra -O2
# 生成する実行ファイル名
TARGET = main
# デフォルトターゲット(何も指定せずに make を実行したとき)
all: $(TARGET)
# 実行ファイルの生成ルール
$(TARGET): main.o sub.o
$(CC) $(CFLAGS) -o $(TARGET) main.o sub.o
# 個々のソースファイルからオブジェクトファイルを作るルール
main.o: main.c
$(CC) $(CFLAGS) -c main.c
sub.o: sub.c
$(CC) $(CFLAGS) -c sub.c
# 掃除用ターゲット: 生成物を削除する
clean:
rm -f $(TARGET) *.o
このディレクトリでmakeと入力すれば、必要なファイルだけが自動的に再コンパイルされ、最終的に実行ファイルが生成されます。
授業で扱う規模の演習であっても、Makefileに慣れておくと後半の課題で大きな差がつきます。
想定されるビルドと実行の流れは次の通りです。
make # Makefileに従ってビルド
./main # 実行
Hello from sub.c!
授業でつまずかないための動作確認とトラブル対処
はじめてのCプログラム(Hello World)のコンパイルと実行

環境構築が終わったら、必ず「Hello World」プログラムで動作確認を行います。
これに成功すれば、授業で扱う多くの演習は問題なく進められるはずです。
Hello Worldのサンプルコード
まず、main.cという名前のファイルを作成し、次のコードを書きます。
/* main.c: 最初のCプログラム - Hello World */
#include <stdio.h> // 標準入出力ライブラリを使うためのヘッダ
int main(void) { // プログラムの入り口となる関数
printf("Hello, World!\n"); // 画面に文字を表示する
return 0; // 正常終了を示す
}
コンパイルと実行
ターミナルで次のように操作します。
# 1. コンパイルして実行ファイル(a.out)を作る
gcc main.c
# 2. 実行ファイルを実行する
./a.out
Hello, World!
この表示が得られれば、コンパイラと実行環境が正しく動いている証拠です。
実行ファイル名をa.outではなく任意の名前にしたい場合は、次のように-oオプションを指定します。
gcc main.c -o hello # hello という名前の実行ファイルを生成
./hello
出力は同じく次の通りです。
Hello, World!
コンパイルエラーの読み方とよくあるミス

C言語の授業で多くの人がつまずくのが、コンパイルエラーの読み方です。
エラーが出ると焦ってしまいがちですが、メッセージは規則的なので、慣れれば原因を素早く特定できます。
コンパイルエラーの基本構造
次のようなコードを考えます(あえてミスを含めています)。
#include <stdio.h>
int main(void) {
printf("Hello, World!\n") // セミコロンをわざと抜く
return 0;
}
これをコンパイルすると、次のようなエラーが出ます。
gcc main.c
main.c: In function 'main':
main.c:4:33: error: expected ';' before 'return'
4 | printf("Hello, World!\n")
| ^
| ;
5 | return 0;
| ~~~~~~
このメッセージは次のように読み解きます。
main.c: エラーが発生したファイル名4:33: 行4、列33付近に問題があるerror: expected ';' before 'return': ‘return’の前にセミコロンが必要というエラー内容
行番号とエラーの内容を手がかりに、ソースコードを確認して修正します。
この例では、printf行の末尾に;を付ければ解決します。
よくあるミスとその症状
文章で、代表的なミスと症状をいくつか挙げます。
- セミコロン
;の付け忘れ
→expected ‘;’というメッセージが出ることが多いです。行末を中心に見直します。 - ヘッダファイルの書き忘れ(例:
#include <stdio.h>なしでprintfを使用)
→implicit declaration of function ‘printf’など、「宣言されていない関数」という警告やエラーが出ます。対応するヘッダを追加します。 - main関数の書き方が誤っている(例:
void main()など)
→ 授業ではint main(void)を基本形として統一しておくと良いです。
コンパイルエラーに出会ったときは、エラーメッセージをよく読む → 該当行を確認する → 似た症状をネットや資料で検索するという流れに慣れておくと、授業中もスムーズに進められます。
パス(path)設定や権限エラーの確認ポイント

C言語の授業では、コンパイルそのものだけでなく、パス(PATH)やファイルの権限でつまずく人も少なくありません。
代表的なケースを押さえておきます。
PATHが原因の問題
gccやmakeなどのコマンドは、PATH環境変数に登録されたディレクトリの中から検索されます。
もしPATHに含まれていない場所にインストールされていると、次のようなエラーになります。
bash: gcc: command not found
この場合、まずはwhich gccで実際の場所を確認します。
which gcc
何も表示されなければ、インストール自体に問題がある可能性が高いです。
場所が表示された場合は、PATHにそのディレクトリが含まれているかを確認します。
echo $PATH
ここに/usr/binなどが含まれていれば、通常gccは見つかるはずです。
授業で配布された仮想環境や学校のPCでは、最初から正しく設定されていることがほとんどなので、自分でPATHを上書きしてしまわないように注意しましょう。
実行権限が原因の問題
コンパイルして生成された実行ファイルを起動しようとしたとき、次のようなエラーが出ることがあります。
bash: ./main: Permission denied
これは、そのファイルに「実行権限」が与えられていないことを意味します。
ls -lコマンドで権限を確認します。
ls -l main
-rw-r--r-- 1 user user 8540 Dec 2 10:15 main
先頭が-rw-r--r--となっており、実行権限xが付いていません。
この場合は次のコマンドで実行権限を付与します。
chmod +x main # ファイルに実行権限を付与
./main # 再度実行
コンパイラ(gcc)で生成された実行ファイルは通常最初から実行権限が付与されていますが、スクリプトや他のマシンからコピーしたファイルではこの問題が起きやすいので、覚えておくと授業中のトラブル対応に役立ちます。
まとめ
LinuxでのC言語環境構築は、一見難しそうに見えますが、gccのインストール、エディタの準備、Hello Worldでの動作確認という3つのステップに分けて考えれば、それほど複雑ではありません。
授業で使うディストリビューションに合わせてコンパイラを導入し、viやnano、VS Codeなど自分にとって扱いやすいエディタを用意しておくことで、授業本来の内容に集中できます。
コンパイルエラーやPATH・権限の問題に出会っても、本記事のポイントを思い出して一つずつ確認すれば、必ず解決に近づきます。
授業が始まる前に環境を整え、落ち着いてC言語の学習に取り組める状態を作っておきましょう。
