エラーの内容Cベースの依存関係を含むプロジェクトで go build や go run を実行した際、おそらくこの壁に突き当たったことでしょう。エラーメッセージは簡潔です。
cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH%
原因通常、Goは外部ツールを必要とせず、単一の静的バイナリにコンパイルされます。しかし、SQLiteドライバ (go-sqlite3) や Kafkaクライアント など、多くの人気ライブラリは CGO に依存しています。この仕組みによって、Goから既存のCコードを呼び出すことができます。
GCCのようなCコンパイラがないと、Goはこれらの低レベルなファイルを処理できません。システムのPATHに gcc が含まれていない場合、ビルドツールチェーンは処理を中断します。GoとCの橋渡しをするために、動作するコンパイラが必要です。
Windowsでの解決方法Windowsには標準でCコンパイラが搭載されていないため、このエラーはWindowsユーザーにとって最も一般的です。GCCをセットアップするには、主に3つの信頼できる方法があります。
方法1: Chocolatey (最短の方法)すでにChocolateyを使用している場合は、手動でのダウンロードは不要です。管理者権限でPowerShellを開き、次のコマンドを実行してください。
choco install mingw
これによりMinGW-w64ディストリビューションがインストールされます。完了後(通常2〜3分かかります)、ターミナルを再起動して環境変数を反映させてください。
方法2: MSYS2 (長期的な安定性に最適)MSYS2は、最新のGCCビルドを提供する堅牢な環境です。多くのGoコントリビューターに好まれている選択肢です。
- msys2.org からインストーラーをダウンロードします。- MSYS2 UCRT64 ターミナルを起動します。- 次のコマンドを実行して、ツールチェーン一式を取得します。``` pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
最後に、`C:\msys64\ucrt64\bin` をWindowsのシステム環境変数PATHに追加します。これにより、プロジェクトをビルドする際にGoが `gcc.exe` を見つけられるようになります。
### 方法3: 手動インストール- GitHubまたはSourceForgeからMinGW-w64のファイルをダウンロードします。- `C:\mingw64` のような分かりやすいディレクトリに解凍します。- スタートメニューを開き、「システム環境変数の編集」を検索します。- **システム環境変数** セクションで **Path** を探し、**編集** をクリックします。- リストに `C:\mingw64\bin` を追加し、変更を保存します。## Linuxでの解決方法Linuxディストリビューションでは、この解決は非常に簡単です。標準の開発パッケージをインストールするだけで、ディスク容量も通常100MB程度しか消費しません。
### Ubuntu / Debian / Mint```
sudo apt update && sudo apt install build-essential
CentOS / RHEL / Fedora```
sudo dnf groupinstall "Development Tools"
### Arch Linux```
sudo pacman -S base-devel
macOSでの解決方法Appleは「Command Line Tools」という簡略化されたパッケージを提供しています。12GBもある巨大なXcode IDEは不要で、約500MBのダウンロードで十分です。
xcode-select --install
ソフトウェアアップデートのポップアップで「インストール」をクリックします。完了すると、gcc(Macでは実際にはClangコンパイラへのショートカット)が使用可能になります。
「CGOは不要」な場合の回避策場合によっては、Cコンパイラを必要としないこともあります。プロジェクトが厳密にCの機能を必要としない場合、GoにCGOを完全にスキップするように指示できます。これにより、よりポータブルなバイナリが作成され、GCCの要件を回避できます。
CGO_ENABLED フラグを0に設定してビルドを試してみてください。
# Windows (PowerShell)
$env:CGO_ENABLED="0"; go build
# Linux / macOS
CGO_ENABLED=0 go build
注意: github.com/mattn/go-sqlite3 を使用している場合、この方法は失敗します。この特定のライブラリはCGOを必要とします。どうしてもCコンパイラを使いたくない場合は、modernc.org/sqlite のような純粋なGoの実装(Pure Go)に切り替えてください。
確認: 修正されたか?新しいターミナルウィンドウを開き、次のコマンドを実行してコンパイラのバージョンを確認します。
gcc --version
gcc (MinGW-W64) 13.2.0 のような出力が表示されるはずです。次に、Goが変更を認識しているか確認します。
go env CGO_ENABLED
go build ./...
go env が 1 を返し、ビルドがエラーなしで完了すれば、環境設定は成功です。

