Golang クロスコンパイル を忘れていた してみた編

前々回のエントリー 準備編
http://d.hatena.ne.jp/factory-g/20150122#1421920788
を経て、今回実際クロスコンパイルをしてみた。
何度もコピペしてアレですが、
http://revel.github.io/manual/deployment.html

$ cd /path/to/goroot/src
$ GOOS=linux GOARCH=amd64 ./make.bash --no-clean
$ GOOS=windows GOARCH=386 ./make.bash --no-clean

"/path/to/goroot/src" あーあれだアレアレ

golang本体があるディレクトリです。
GOROOTとかいう、インストール先です。
ちなみにGOROOTをechoで参照しても空白でした。

"$ GOOS=linux GOARCH=amd64 ./make.bash --no-clean" MACだと無理だからコレコレ

$ GOOS=linux GOARCH=amd64 ./make.bash --no-clean
# Building C bootstrap tool.
cmd/dist
ld: can't open output file for writing 'cmd/dist/dist.ld_svRXHN', errno=13 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

怒られっから。

$ sudo GOOS=linux GOARCH=amd64 ./make.bash --no-clean
Password:
# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool for host, darwin/amd64.
lib9
libbio
liblink
・
・

コンパイル始まるから。

どうも、移転先のOS毎に予めコンパイルするみたい

 sudo GOOS=windows GOARCH=386 ./make.bash --no-clean
# Building C bootstrap tool.
cmd/dist

# Building compilers and Go bootstrap tool for host, darwin/amd64.
lib9
・
・

それで、$GOPATH(開発ソースのルートディレクトリ)で

$ GOOS=linux GOARCH=amd64 revel package app_name
~
~ revel! http://revel.github.io
~
INFO  2015/01/23 15:35:42 revel.go:320: Loaded module static
2015/01/23 15:35:42 reflect.go:724: Failed to generate name for field. Make sure the field name is valid.
・
・
Your archive is ready: app_name.tar.gz

多分だけど、Windowsコンパイルだと、

$ GOOS=windows GOARCH=386 revel package app_name

に、すれば良さげっす(やってない)(ゲス顔)。

公開サーバで解凍して

$ ./run.sh 
Listening on :9000...

動いてるっぽいけど。。。
あれ?
バックグラウンド実行じゃないの?
あれぇ↑
ちょっと調べてみます。