カテゴリ: Go言語 更新日: 2026/03/31

Go言語でmacOS向けにクロスコンパイルする手順を解説 初心者でもわかるGoクロスコンパイル入門

Go言語でmacOS向けにクロスコンパイルする手順を解説
Go言語でmacOS向けにクロスコンパイルする手順を解説

先生と生徒の会話形式で理解しよう

生徒

「Go言語で作ったプログラムをmacOSでも動かしたいのですが、今はWindowsで開発しています。別のパソコンが必要ですか?」

先生

「いいえ。Go言語にはクロスコンパイルという便利な機能があります。WindowsやLinuxで作ったプログラムを、macOS用のプログラムとしてビルドできます。」

生徒

「クロスコンパイルとは何ですか?」

先生

「簡単に言うと、今使っているパソコンとは別のOS用のプログラムを作ることです。例えばWindowsのパソコンでmacOS用のアプリを作ることができます。」

生徒

「それは便利ですね。Go言語ではどうやってやるのですか?」

先生

「GOOSとGOARCHという設定を使ってビルドします。これを設定するだけでmacOS用のプログラムを作れます。」

1. Go言語のクロスコンパイルとは

1. Go言語のクロスコンパイルとは
1. Go言語のクロスコンパイルとは

Go言語の大きな特徴の一つが、簡単にクロスコンパイルできることです。クロスコンパイルとは、現在使っているパソコンとは別のOS用のプログラムを作ることです。

例えば次のような状況があります。

  • Windowsパソコンで開発している
  • Linuxサーバーで動かしたい
  • macOSでも動くツールを作りたい

通常のプログラミング言語では、それぞれのOSの環境を用意してコンパイルする必要があります。しかしGo言語では、コマンドを少し変更するだけで別のOS用の実行ファイルを作ることができます。

これはGo言語が最初からマルチプラットフォーム開発を想定して設計されているためです。マルチプラットフォームとは、一つのプログラムを複数のOSで動かせる仕組みのことです。

2. GOOSとGOARCHとは

2. GOOSとGOARCHとは
2. GOOSとGOARCHとは

Go言語でクロスコンパイルを行うときに重要になるのがGOOSとGOARCHという環境変数です。

環境変数とは、プログラムの動作を決める設定のようなものです。ここでは次の二つを覚えておきましょう。

名前 意味
GOOS 対象のOSを指定する
GOARCH CPUの種類を指定する

macOS用のプログラムを作る場合は、GOOSにdarwinを指定します。

darwinとはmacOSの内部で使われているOSの名前です。Go言語ではmacOSをdarwinとして扱います。

多くのMacパソコンは64bitのCPUを使っているため、GOARCHはamd64またはarm64を指定します。

3. macOS向けにクロスコンパイルする基本コマンド

3. macOS向けにクロスコンパイルする基本コマンド
3. macOS向けにクロスコンパイルする基本コマンド

それでは実際にGo言語でmacOS向けの実行ファイルを作ってみましょう。ここでは最も基本的なクロスコンパイル方法を紹介します。


GOOS=darwin GOARCH=amd64 go build main.go

このコマンドは次の意味になります。

  • GOOS=darwin macOS用のプログラムを作る
  • GOARCH=amd64 64bitCPU用にビルドする
  • go build プログラムをコンパイルする

このコマンドを実行すると、macOSで動く実行ファイルが作成されます。Windowsで作業していてもMac用のプログラムを作れるのがGo言語の大きな魅力です。

4. 簡単なGoプログラムを作ってクロスコンパイルする

4. 簡単なGoプログラムを作ってクロスコンパイルする
4. 簡単なGoプログラムを作ってクロスコンパイルする

実際に簡単なGoプログラムを作り、macOS用の実行ファイルを作ってみましょう。

まずは次のようなGoプログラムを作ります。


package main

import "fmt"

func main() {
    fmt.Println("Hello macOS from Go")
}

このプログラムは、画面にメッセージを表示するだけのシンプルなGoプログラムです。

次にmacOS用の実行ファイルを作ります。


GOOS=darwin GOARCH=amd64 go build hello.go

これでmacOS用のバイナリファイルが作成されます。このファイルをMacにコピーすれば、そのまま実行できます。

5. 出力ファイル名を指定してビルドする

5. 出力ファイル名を指定してビルドする
5. 出力ファイル名を指定してビルドする

Go言語では、ビルドすると自動的に実行ファイルが作成されます。しかしファイル名を自分で指定したい場合もあります。

その場合は-oオプションを使用します。


GOOS=darwin GOARCH=amd64 go build -o macapp main.go

このコマンドを実行すると、macappという名前の実行ファイルが作成されます。

MacではWindowsのように拡張子exeが付かないため、そのままの名前で実行ファイルになります。

6. Apple Silicon Mac向けにビルドする方法

6. Apple Silicon Mac向けにビルドする方法
6. Apple Silicon Mac向けにビルドする方法

最近のMacパソコンではApple Siliconと呼ばれる新しいCPUが使われています。代表的なものはM1やM2などです。

この場合はGOARCHをarm64に設定します。


GOOS=darwin GOARCH=arm64 go build main.go

これによりApple Silicon Macで動作するネイティブバイナリを作ることができます。

現在のMac環境では、次の二つのCPU種類があります。

  • amd64 Intel Mac
  • arm64 Apple Silicon Mac

Go言語ではこの違いも簡単に切り替えてビルドできます。

7. クロスコンパイル時のよくあるトラブル

7. クロスコンパイル時のよくあるトラブル
7. クロスコンパイル時のよくあるトラブル

Go言語のクロスコンパイルはとても簡単ですが、初心者がつまずきやすいポイントもあります。

まず多いのが環境変数の書き方です。GOOSやGOARCHを指定しない場合は現在のOS用のプログラムが作られます。

もう一つよくあるのがCPUの種類の違いです。Intel MacとApple Silicon MacではCPUの種類が違うため、GOARCHの値も変わります。

もしMacで実行できない場合は、CPUの種類が合っているか確認してみましょう。

またGo言語のプログラムは基本的に単一の実行ファイルとしてビルドされるため、依存ライブラリの問題が起こりにくいのも特徴です。この仕組みのおかげでクロスコンパイルが非常に簡単になっています。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Go言語クロスコンパイルの振り返り

ここまで、Go言語を使ってmacOS向けにクロスコンパイルする方法について詳しく学んできました。Go言語はシンプルで高速なプログラミング言語として知られていますが、その大きな特徴の一つがクロスコンパイルの簡単さです。

通常のプログラミング言語では、Windows用のプログラムはWindowsで、Linux用のプログラムはLinuxでコンパイルする必要があります。しかしGo言語では、GOOSとGOARCHという環境変数を設定するだけで、別のOS向けの実行ファイルを作ることができます。

例えばWindowsやLinuxの開発環境からmacOS用のバイナリを作成する場合、次のようなコマンドを使用します。


GOOS=darwin GOARCH=amd64 go build main.go

このコマンドを実行するだけで、macOS用の実行ファイルを作ることができます。darwinはmacOSの内部OS名であり、Go言語ではmacOSを指定するために使用します。またamd64はIntel Mac向けのCPUアーキテクチャを意味しています。

最近のMacではApple Siliconという新しいCPUが使われています。M1やM2などのMacではarm64を指定する必要があります。そのためApple Silicon Mac向けのGoプログラムを作る場合は次のコマンドになります。


GOOS=darwin GOARCH=arm64 go build main.go

Go言語のクロスコンパイル機能を活用することで、Windows開発環境からmacOSアプリケーションをビルドしたり、Linuxサーバー向けのツールを作ったりすることが簡単にできます。このマルチプラットフォーム開発のしやすさは、Go言語がサーバー開発やツール開発で人気になっている理由の一つです。

Go言語クロスコンパイルの重要ポイント

Go言語でmacOS向けクロスコンパイルを行う場合、いくつか覚えておきたいポイントがあります。まず重要なのがGOOSとGOARCHという二つの環境変数です。

設定項目 役割
GOOS 対象となるOSを指定する
GOARCH CPUアーキテクチャを指定する

macOSの場合はGOOSにdarwinを指定します。そしてCPUの種類に応じてGOARCHを設定します。Intel Macならamd64、Apple Silicon Macならarm64を指定するのが基本です。

またGo言語ではビルド時に出力ファイル名を指定することもできます。開発現場ではビルドしたバイナリの名前を分かりやすくすることが多いため、次のようにoオプションを使うケースがよくあります。


GOOS=darwin GOARCH=amd64 go build -o macapp main.go

このコマンドではmacappという名前の実行ファイルが作成されます。macOSではWindowsのようにexe拡張子を付ける必要がないため、シンプルな名前で実行ファイルを作ることができます。

Go言語で作るシンプルなmacOS用プログラム

クロスコンパイルの理解を深めるために、もう一度簡単なGoプログラムを確認してみましょう。Go言語では次のようなシンプルなコードでもmacOS向けの実行ファイルを作ることができます。


package main

import "fmt"

func main() {
    fmt.Println("Hello macOS from Go")
}

このような小さなプログラムでも、GOOSとGOARCHを設定することでmacOS向けのバイナリを作成できます。Go言語は単一の実行ファイルとしてビルドされるため、ライブラリの依存関係で悩むことが少ないのも特徴です。

そのためGo言語はコマンドラインツール開発やサーバーツール開発、クラウドツール開発、DevOpsツールなどさまざまな分野で活用されています。特にマルチプラットフォーム対応ツールを作る場合、Go言語のクロスコンパイル機能は非常に強力です。

Windows、Linux、macOSのすべてで動作するツールを作る場合でも、同じGoソースコードからそれぞれのOS向けバイナリを簡単に作ることができます。これにより配布や運用も非常に簡単になります。

Go言語クロスコンパイルを実務で活用する

実際の開発現場では、Go言語のクロスコンパイルは非常によく使われています。例えば次のような場面です。

  • Windows開発環境からLinuxサーバー用ツールをビルドする
  • macOS用コマンドラインツールを配布する
  • 複数OS対応のCLIツールを作る
  • GitHub公開ツールとしてバイナリ配布する

これらの用途では、GOOSとGOARCHを切り替えながら複数の実行ファイルを作成することが一般的です。Go言語のクロスコンパイル機能を理解しておくと、さまざまな環境向けのアプリケーションを効率よく作れるようになります。

先生と生徒の振り返り会話

生徒

Go言語のクロスコンパイルって思っていたより簡単ですね。GOOSとGOARCHを設定するだけでmacOS用のプログラムが作れるとは知りませんでした。

先生

その通りです。Go言語の大きな魅力はマルチプラットフォーム開発のしやすさです。同じソースコードからWindows、Linux、macOS向けの実行ファイルを作ることができます。

生徒

macOS用のプログラムを作る場合はGOOSにdarwinを指定するのでしたよね。

先生

そうです。そしてCPUの種類に応じてGOARCHを設定します。Intel Macならamd64、Apple Silicon Macならarm64を指定します。

生徒

つまり次のようなコマンドになるのですね。


GOOS=darwin GOARCH=amd64 go build main.go

先生

その通りです。このようにGo言語ではクロスコンパイルが非常に簡単です。複数OS向けのツールを作るときはとても役立ちます。

生徒

Go言語がサーバー開発やCLIツール開発で人気なのも納得ですね。これならWindows環境でもmacOS向けアプリを作れそうです。

先生

その理解で大丈夫です。これからはWindows用、Linux用、macOS用のクロスコンパイルを組み合わせて、マルチプラットフォーム対応ツールを作ってみてください。

関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のデータベース操作の基本を完全解説!database/sqlパッケージ入門
New2
Kotlin
Kotlinのリポジトリパターンの基本と実装例!初心者にもわかる設計手法
New3
Kotlin
KotlinのRoomでコルーチン対応!suspend関数とFlowの使い方をやさしく解説
New4
Kotlin
Kotlinのカバレッジ計測ツール入門|初心者向けJaCoCoの使い方をわかりやすく解説
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Java&Spring記事人気No3
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.4
Java&Spring記事人気No4
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.5
Java&Spring記事人気No5
Kotlin
KotlinのRoomで複雑なクエリを使いこなす!初心者でもわかる応用テクニック
No.6
Java&Spring記事人気No6
Go言語
Go言語の構造体にメソッドを定義する方法をやさしく解説
No.7
Java&Spring記事人気No7
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのsettings.gradleファイルを完全解説!初心者でもわかるプロジェクト設定の基本