Hello world が出来なかった
業務でGolangを使用する機会がありました。
本格的には触らなかったので、とりあえず自習しようとしました。
- とりあえず
hello.go
を作ってhello worldを表示しようとします。
$ go run hello.go
exec: "C:\\Users\\xxxxx\\AppData\\Local\\Temp\\go-build929698758\\b001\\exe\\hello": file does not exist
ああ??なんだこれ?hello World で死ぬか?普通?ってなったわけです。
失敗した原因
とりあえず build だけやってみる
xxxxx@xxx MSYS /c/Users/xxxxx/Documents/test/go
$ go build hello.go
xxxxx@xxx MSYS /c/Users/xxxxx/Documents/test/go
$ ls
hello hello.go
- バイナリ?が windows のじゃない!!
windowsで実行するなら
$ ls
hello.exe hello.go
ができるのが正解ですよね~
こうなる原因が環境変数のGOOSでした。
$ env | grep GOOS
GOOS=linux
こうなっていたわけですよ。このGOOS=linux
がいけなかった。
業務中にテキトーに設定したのがいけなかった。
GOOS=linux
って環境変数を設定しているとbuild
して作られるバイナリファイルがLinux向けに作られるっぽい?
MSYS2
またはgit-for-windows
上でなら実行できるのでは?とか思ったのですがエラーでしたね。
てことで、
どうすれば良いのか
GOOSを変えます
$ export GOOS=windows
# cmdだったら以下
set GOOS=windows
をした後に build すると
hello.exe
が生成されますよっと。
これで解決。
GOOS=windows
に設定するのが正しいのかは知らない。
もうこの環境変数消した方がいいのかな。