9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DockerでGo言語をお手軽クロスコンパイル(Go環境が無い状態で1行コンパイル)

9
Last updated at Posted at 2016-02-20

frontpage.pngdocker_toolbox_banner_icon.png

1.概要

DockerのGo言語コンテナイメージを使用し、何もない状態(Dockerは導入済み)でGo言語を1行の命令でコンパイルする方法をご紹介します。

2.方法

2.1.ソースファイルの格納場所に移動

Dockerを利用できる状態のコマンドプロンプト(DOCKER CLIなど)でホームディレクトリ配下のGo言語のソースを置いているディレクトリに移動。(Windows/Maxの場合、デフォルトではDockerが動作しているVirtualBoxの共有フォルダがUserディレクトリとなっているため)
(例)

cd ~/develop/go

サンプルとして上のディレクトリにサンプルのソースファイルを置きます。

hello.goファイル

go
package main
import "fmt"
func main() {
	fmt.Println("こんにちは世界")
}

2.2.コンパイルの実行

カレントディレクトリのソースをコンパイルします。
GOOSとGOARCHの値を変更するだけで、違うアーキテクチャの実行ファイルを作成できます。(WindowsでMacの実行ファイルなど)

Windowsの場合

docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.6 go build -v
  • 初回はコンテナイメージのダウンロードが発生するため多少時間が掛かります。(次回からは一瞬)
  • Macの場合⇒「 -e GOOS=darwin -e GOARCH=amd64 」
  • Linuxの場合⇒「 -e GOOS=linux -e GOARCH=amd64 」

他のアーキテクチャの場合は下の「 GOOS・GOARCH一覧リスト 」を参照。

2.3.実行してコンパイル結果を確認

Windowsの場合
コマンドプロンプトから先ほどのディレクトリに移動して作成されたexeファイルを実行。
myapp_go.png

補足

GOOS・GOARCH一覧リスト

$GOOS $GOARCH
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
linux mips64
linux mips64le
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?