Help us understand the problem. What is going on with this article?

クロスコンパイルに感動した

More than 3 years have passed since last update.

インストール

インストール
$ brew install go
クロスコンパイル用準備。一度だけ実行すれば良い。
$ cd /usr/local/Cellar/go/*/libexec/src
$ ./all.bash
  (5分待つ)
windows_32bit向けコンパイラ生成
$ cd /usr/local/Cellar/go/*/libexec/src
$ GOOS=windows GOARCH=386 ./make.bash
  (1分待つ)
  (../bin/windows_386/が生成される。)

プログラム書く

なにか書く

cd ~/src/
cat > hi.go <<EOF
package main

func main() {
    println("こんにちは")
}
EOF

動作確認

1.コンパイルせずに実行
$ go run hi.go
2.コンパイルして実行
$ go build hi.go
$ ./hi.go

ビルド(windows32bit)

windows32bit
$ GOOS=windows GOARCH=386 go build hi.go

hi.exeが生成される。
windows機に転送して動作を確認。

実行ファイルがどの環境向けかはfileコマンドで調べられます。

環境設定一覧

  • 自分が使う環境一覧
GOOS=windows GOARCH=386
GOOS=windows GOARCH=amd64
GOOS=linux GOARCH=386
GOOS=linux GOARCH=amd64
GOOS=linux GOARCH=arm

raspberry pi用にもビルドできて感動した。

実行ファイルの圧縮

  • upxを使い圧縮しましょう。
sudo apt-get install -y upx
$ upx a.exe
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
   7692800 ->   2243584   29.16%    win64/pe     a.exe

vimで*.goのsyntax hilight

~/.vimrc
set runtimepath+=/usr/local/Cellar/go//1.2/libexec/misc/vim
auto BufNewFile,BufRead *.go set ft=go
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away