MacでC言語を始める際は、コンパイラの用意が第一歩です。
MacにはXcode由来のclangとHomebrewから導入するgccという2つの代表的な選択肢があります。
本記事では、C言語初心者の方が迷わず準備できるように、Xcode(Command Line Tools)の導入確認からHomebrewでのgcc追加、実際のコンパイルと実行、つまずきやすいエラーの直し方まで順に解説します。
MacでCコンパイラを準備する
Cコンパイラとは
Cコンパイラは、C言語で書かれたソースコード(.c
ファイル)を、Macが実行できる形式のプログラムに変換するツールです。
内部ではプリプロセス、コンパイル、アセンブル、リンクという段階を経て、最終的に実行可能ファイル(a.out
や指定名のバイナリ)を生成します。
Macでは主にAppleのclangとGNUのgccが利用されますが、どちらもC言語の学習には十分な機能を備えています。
Macの選択肢: clang(Xcode)とgcc(Homebrew)
Macには標準的にXcodeのコンパイラ群(Apple clang)を導入する方法と、パッケージマネージャHomebrewでGNU GCCを導入する方法があります。
初心者の方はまずCommand Line Toolsでclangを使えるようにするのが簡単です。
必要に応じて後からHomebrewでgccを追加すると、授業やオンラインジャッジの指定に柔軟に対応できます。
以下に両者の要点をまとめます。
項目 | Xcodeのclang | Homebrewのgcc |
---|---|---|
導入方法 | XcodeまたはCommand Line Toolsをインストール | Homebrewをインストール後、brew install gcc |
実体 | Apple clang(LLVM系) | GNU GCC(FSF版) |
コマンド名 | clang 、cc | gcc-14 などバージョン付き(注意: gcc はApple clangのことが多い) |
更新 | macOSやXcode更新に追随 | brew upgrade で更新 |
初心者適性 | 最も簡単 | 追加で導入するとベター |
備考 | Xcode GUIと連携が容易 | バージョンを明示して使い分けやすい |
まずclangを使えるようにして、必要があればgccを追加という進め方が無理がありません。
初心者におすすめの導入と設定の流れ
最短で進めるなら、次の順番をおすすめします。
まずCommand Line Toolsの導入でclang
を使えるようにし、動作確認の後、必要になったらHomebrewとgccを追加します。
最後に簡単なCプログラムを作ってコンパイルと実行を試し、環境が整っているか確認します。
Xcode(Command Line Tools)のインストール
Xcodeの入手(App Store)
XcodeはApple公式の統合開発環境です。
App Storeで「Xcode」を検索してインストールできます。
ただし容量が大きく(10GB以上)ダウンロードに時間がかかります。
コンパイラだけ使いたい場合は、Xcode本体を入れずにCommand Line Tools(CLTools)だけで十分です。
Command Line Toolsの導入(xcode-select –install)
CLToolsを入れるとclang
やmake
などの開発ツールが使えるようになります。
次のコマンドを実行して指示に従ってください。
# Command Line Toolsのインストールダイアログを表示
xcode-select --install
インストールが完了すると、ターミナルからclang
によるコンパイルが可能になります。
インストール確認(clang –version)
インストールできたか、バージョン表示で確認します。
# clangのバージョンを表示
clang --version
Apple clang version 15.0.0 (clang-1500.1.0.2.5)
Target: arm64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
バージョンやターゲットはMacの機種やOSによって異なりますが、Apple clangと表示されればOKです。
エラー対処(xcrun: error)
macOS更新直後などに以下のエラーが出ることがあります。
# 代表的なエラー例
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
この場合は次のいずれかで解決できます。
# 1) CLToolsを再インストール
xcode-select --install
# 2) 状態をリセット
sudo xcode-select --reset
# 3) Xcode本体を使っている場合はDeveloperパスを切替
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
管理者パスワードを求められる場合があります。
再実行後にclang --version
で動作確認してください。
Homebrewでgccをインストール
Homebrewの準備(インストール/更新)
HomebrewはmacOS向けのパッケージマネージャです。
未導入なら以下でインストールします。
# Homebrewのインストール(公式手順)
# 実行中に表示される指示に従ってパス設定を行ってください
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Apple Silicon(M1/M2/M3)では/opt/homebrew
、Intel Macでは/usr/local
配下に入るのが一般的です。
インストール後は次で確認します。
# brewコマンドの存在とバージョンを確認
brew --version
# Homebrewのリポジトリ情報を最新化
brew update
Homebrew 4.3.0
Homebrew/homebrew-core (no Git repository)
Updated 1 tap (homebrew/core).
command not found: brew
となる場合は、brewが案内するbrew shellenv
の設定を反映してください。
# 例) Apple Siliconのzsh環境での設定(案内に従ってください)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
gccの導入(brew install gcc)
準備ができたらgccを導入します。
# GCCのインストール
brew install gcc
インストールには時間がかかることがあります。
完了後、実行ファイルはgcc-14
のようにバージョン付きで提供されます。
バージョン確認(gcc-XX –version)
次でGNU GCCが使えるか確認します。
# どのgccが呼ばれるか確認
which -a gcc gcc-14
# バージョンを確認
gcc-14 --version
/usr/bin/gcc
/opt/homebrew/bin/gcc-14
gcc-14 (Homebrew GCC 14.2.0) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
gcc
とだけ打つと、Apple clangのラッパーが起動することがあります。
GNU版を使いたい時はgcc-14
のようにバージョン付きで呼び出してください。
環境設定(PATH)の確認
Homebrewのパスが通っているかを確認します。
Apple Siliconなら/opt/homebrew/bin
、Intelなら/usr/local/bin
がPATH
に含まれる必要があります。
# シェル種別とPATHを確認
echo $SHELL
echo $PATH | tr ':' '\n' # 見やすく改行表示
# gcc-14の実体を確認
which -a gcc-14
もしwhich -a gcc-14
が何も返さない場合、Homebrewのパス設定を見直してください。
zshなら~/.zprofile
、bashなら~/.bash_profile
への追記が一般的です。
/usr/bin配下に独自シンボリックリンクを作るのは非推奨です。
Cプログラムのコンパイルと実行
ファイル作成(hello.c)
お試し用にhello.c
を作ります。
エディタは何でも構いませんが、ここでは内容のみ示します。
// hello.c - 最初のCプログラムの例
// コンパイル: clang -std=c17 -Wall -Wextra -o hello_clang hello.c
// または gcc-14 -std=c17 -Wall -Wextra -o hello_gcc hello.c
#include <stdio.h> // printfを使うために必要
int main(void) {
// 画面に文字を表示します
printf("Hello, World!\n");
return 0; // 正常終了を表します
}
clangでコンパイルと実行
clangを使ってコンパイルし、実行します。
# 警告を出しやすくし、C17規格でビルド、出力ファイル名を指定
clang -std=c17 -Wall -Wextra -o hello_clang hello.c
# シンプルなビルドは以下で可能
clang -o hello_clang hello.c
# 実行
./hello_clang
Hello, World!
gccでコンパイルと実行
Homebrewのgccを使う場合は、バージョン付きのコマンド名を用います。
# GNU GCCを明示してビルド
gcc-14 -std=c17 -Wall -Wextra -o hello_gcc hello.c
# シンプルなビルドは以下で可能
gcc-14 -o hello_clang hello.c
# 実行
./hello_gcc
Hello, World!
授業や採点環境でGCCが指定されている場合は、gcc-14
のようにGNU版を呼び出すのが確実です。
出力ファイル名を指定する(-o)
-o
を付けないと、デフォルト名a.out
が生成されます。
任意の名前を付けると後で管理しやすくなります。
# 出力名を省略した場合
clang hello.c
./a.out
# 出力名を指定した場合
clang -o hello hello.c
./hello
Hello, World!
Hello, World!
複数の実行ファイルを使い分けたい時は-o
で名前を付けるのがおすすめです。
よくあるエラーと簡単な直し方
xcrun: errorやclangが見つからない
macOS更新後や初回導入時に発生します。
以下で復旧できます。
# 代表パターン
xcode-select --install # CLToolsを再導入
sudo xcode-select --reset # 状態リセット
実行時にpermission deniedやcommand not found
./a.out
のように先頭に./
を付けて実行してください。
カレントディレクトリはPATH
に含まれないため、a.out
だけでは実行できません。
# NG
a.out # ← 見つからない
# OK
./a.out
zsh: command not found: a.out
Hello, World!
printfが使えない(implicit declaration of function ‘printf’)
#include <stdio.h>
の書き忘れが原因です。
// 誤りの例: ヘッダがない
int main(void) {
printf("Hi\n"); // エラー: printfが宣言されていない
return 0;
}
# コンパイルエラーの例
clang -std=c17 -Wall -Wextra bad.c
bad.c:3:5: warning: implicit declaration of function 'printf' is invalid in C99
修正は#include <stdio.h>
を先頭に追加するだけです。
セミコロン忘れ(expected ‘;’ after …)
行末の;
を付け忘れるとエラーになります。
エラーメッセージに表示される行番号付近を確認し、直前の行の末尾も合わせて見直します。
file not found: hello.c
コンパイルコマンドを実行するディレクトリにhello.c
が無いケースです。
ls
でファイルの存在を確認し、cd
で正しい場所に移動するか、ファイルのフルパスを指定してください。
# 例) ファイルの存在確認と移動
ls
cd path/to/your/sources
clang -o hello hello.c
gccとclangの混同に注意
gcc
コマンドがApple clangの別名であることが多いため、GNU GCCを使いたい時はgcc-14
のようにバージョン付きで呼びます。
確認にはwhich -a gcc gcc-14
が便利です。
まとめ
本記事では、MacでCコンパイラを準備するために、Xcode(Command Line Tools)によるclangの導入とHomebrewによるgccの追加、そして実際のコンパイルと実行の手順を丁寧に解説しました。
まずはCommand Line Toolsでclangを使えるようにし、必要に応じてHomebrewでGNU GCCを追加するのが、初心者がつまずきにくい王道の流れです。
併せてバージョン確認やPATHの点検、よくあるエラーの直し方を覚えておくと、開発の立ち上げが格段にスムーズになります。
準備が整ったら、まずは小さなプログラムから手を動かし、コンパイルと実行に慣れていきましょう。