VAddyのコマンドラインツールをgolangを使って書いているのですが、MacからLinuxやWindowsのバイナリを生成して、例えばLinux環境で動作させようとすると、
line 1: syntax error near unexpected token `newline'
line 1: `!<arch>'
というエラーが出て動作しない状況に遭遇しました。
解決策は簡単で、main()が書いてあるファイルのpackage宣言がpackage mainではなくpackage vaddyという名前になっていたのが原因でした。これをクロスコンパイルすると外部ライブラリとしてコンパイルするだけで、実行可能ファイルにはなりません。
Mac上で開発していて、package vaddyの状態でも go run xxx.goとすると実行できてしまうので、クロスコンパイルするまでは気付かない問題でした。
ちなみに、クロスコンパイルするときは、例えばlinux 64bitの場合は下記のようにしています。
GOOS=linux GOARCH=amd64 go build -o bin/vaddy-linux-64bit
このようなシェルスクリプトを作成して、複数環境のバイナリを生成しています。
参考文献
- 作者: 山口徹,Jxck,佐々木大輔,横路隆,加来純一,山本伶,大平武志,米川健一,坂本登史文,若原祥正,和久田龍,平栗遵宜,伊藤直也,佐藤太一,高橋俊幸,海野弘成,五嶋壮晃,佐藤歩,吉村総一郎,橋本翔,舘野祐一,中島聡,渡邊恵太,はまちや2,竹原,河合宜文,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/23
- メディア: 大型本
- この商品を含むブログ (1件) を見る