在Windows上使用golang:如何构建Linux版本?

4 浏览
0 Comments

在Windows上使用golang:如何构建Linux版本?

在Windows上如何为Linux编译Go文件/项目?

在Linux上,可以通过一行命令完成:

GOOS=windows go build -o filename.exe codefile.go

我尝试了类似的操作,但是在我的Linux服务器(Ubuntu 16.04 amd64)上只出现了一个错误:

-bash: ./gotest: 无法执行二进制文件: 执行格式错误。

我尝试了使用用户环境变量GOOS = linuxGOARCH = amd64,以及在Powershell中使用set GOOS = linux,但是我对Powershell不够了解——go build命令可以顺利运行并生成文件。

有人能解释一下在Windows上(10 1709 x64)通过Powershell(或cmd)(通过VS Code)使用go-1.10的一般操作步骤吗?

0
0 Comments

在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上正常运行。

0