Windows下的Goland编译Linux可执行程序
场景
Windows系统安装了Goland,且Goland中指定终端使用Git Bash。在该场景下编译出Linux可执行程序。
解决方法一(cmd):
- 在Windows的cmd设置go的环境变量
set GOARCH=amd64
set GOOS=linux - 在cmd终端下编译程序
go build xx.go - 将可执行程序拷贝到linux系统某个文件夹下,赋予可执行权限并执行
chmod 777 xx
./xx
解决方法二(Git Bash):
在cmd终端下更改了go的环境变量,但是对Goland的终端(Git Bash)无效;且在Git Bash执行set GOOS=linux也不生效。
- 在Git Bash终端设置go的环境变量
export GOARCH=amd64
export GOOS=linux - 在Git Bash终端下编译程序
go build xx.go - 将可执行程序拷贝到linux系统某个文件夹下,赋予可执行权限并执行
chmod 777 xx
./xx
说明
以上两种解决方法只能临时修改go的环境变量,重启Goland或者重启cmd终端后失效。
执行 go env -w GOOS=linux 可以修改go的环境变量GOOS,且当重启Goland后或者打开其他项目后都有效。但是在Git Bash下执行chmod 777 xx赋予文件xx可执行权限失败。
如果按上述方式永久修改了GOOS,使用Goland的run命令直接运行程序会失败,即使临时设置export GOOS=windows也不起作用,只能通过go env -w GOOS=windows修改GOOS后才能在Goland中直接运行程序。
终上所述,在windows系统的Goland中编译Linux的可执行程序时,建议临时修改export GOOS=linux,而不是使用go env -w GOOS=linux永久修改。