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
$ GOOS=windows GOARCH=386 revel package app_name
に、すれば良さげっす(やってない)(ゲス顔)。
公開サーバで解凍して
$ ./run.sh Listening on :9000...
動いてるっぽいけど。。。
あれ?
バックグラウンド実行じゃないの?
あれぇ↑
ちょっと調べてみます。