在Windows上使用golang:如何构建Linux版本?
在Windows上使用golang:如何构建Linux版本?
在Windows上如何为Linux编译Go文件/项目?
在Linux上,可以通过一行命令完成:
GOOS=windows go build -o filename.exe codefile.go
我尝试了类似的操作,但是在我的Linux服务器(Ubuntu 16.04 amd64)上只出现了一个错误:
-bash: ./gotest: 无法执行二进制文件: 执行格式错误。
我尝试了使用用户环境变量GOOS = linux
和GOARCH = amd64
,以及在Powershell中使用set GOOS = linux
,但是我对Powershell不够了解——go build命令可以顺利运行并生成文件。
有人能解释一下在Windows上(10 1709 x64)通过Powershell(或cmd)(通过VS Code)使用go-1.10的一般操作步骤吗?
在Windows上构建Linux应用的问题是因为Windows和Linux是两个不同的操作系统,它们使用不同的系统调用和二进制格式。因此,在Windows上构建的应用程序不能直接在Linux上运行。要解决这个问题,可以使用以下方法:
1. 使用git bash(如果已安装)执行以下命令:
env GOOS=linux go build -o filename
这个命令使用环境变量`GOOS`来指定目标操作系统为Linux,并使用`go build`命令编译应用程序。
2. 可以通过设置环境变量`GOOS`为Linux来设置整个命令会话的执行操作系统:
set GOOS=linux go build -o filename
这样,每次执行`go build`命令时,都会将目标操作系统设置为Linux。
这些方法都适用于Windows 10和Ubuntu 16.04 LTS,并且可以成功构建可以在Ubuntu上运行的应用程序。
需要注意的是,使用`env`部分不是必需的。只有在不想永久更改go环境的情况下,才需要使用这种方式来临时设置目标操作系统。省略`env`部分会使`GOOS`的定义仅在子进程中生效,这是POSIX类似shell的基本特性。
这些解决方法都是基于命令行的,通过设置环境变量或使用特定的命令参数来指定目标操作系统为Linux。这样可以确保在Windows上构建的应用程序能够在Linux上正常运行。