cannot execute binary file exec format error
是因為mac和ubuntu的二進制格式不一致
問題
Go是一門編譯型語言叽讳,所以在不同平臺上,需要編譯生成不同格式的二進制包坟募。
由于Go 1.5對跨平臺編譯有了一些改進岛蚤,包括統(tǒng)一了編譯器、鏈接器等懈糯。
編譯時候只需要指定兩個參數(shù):GOOS和GOARCH即可灭美。
編譯到 linux 64bit
$ GOOS=linux GOARCH=amd64 go build
或者可以使用 -o 選項指定生成二進制文件名字
$ GOOS=linux GOARCH=amd64 go build -o app.linux
編譯到 linux 32bit
$ GOOS=linux GOARCH=386 go build
編譯到 windows 64bit
$ GOOS=windows GOARCH=amd64 go build
編譯到 windows 32bit
$ GOOS=windows GOARCH=386 go build
編譯到 Mac OS X 64bit
$ GOOS=darwin GOARCH=amd64 go build
在不同的平臺編寫快捷生成腳本的時候也是不一樣的
linux sh
GOARCH=amd64 GOOS=linux go build -o myweb main.go
windows bat
set GOARCH=amd64
set GOOS=linux
go build -o myweb main.go