【问题标题】:golang on windows: How to build for Linux? [duplicate]Windows 上的 golang:如何为 Linux 构建? [复制]
【发布时间】:2018-09-02 02:27:57
【问题描述】:

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

在 Linux 上应该可以通过单线:

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

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

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

我尝试使用用户 Env-vars for GOOS = linuxGOARCH = amd64 以及通过 Powershell 中的 set GOOS = linux,但我对 Powershell 的了解不够 - go build 命令运行时没有错误并生成文件。

任何人都可以使用 go-1.10 通过 Powershell(或 cmd)(通过 VS Code)解释 Windows (10 1709 x64) 上的一般操作方法吗?

【问题讨论】:

  • 我试过了,但只有 $env:GOOS="linux";去构建...工作

标签: powershell go environment-variables cross-compiling


【解决方案1】:

如果你的机器上安装了 git bash,请使用它并执行以下命令

env GOOS=linux go build -o filename

您可以通过以下方式为整个命令会话设置执行操作系统:

set GOOS=linux
go build -o filename

它在相同的 Windows 10 版本上对我有用,并且在 Ubuntu 16.04 LTS 上运行流畅

【讨论】:

  • 可行,但请注意您不需要 env  部分。
  • 没错。我以这种方式使用它的唯一原因是不要永久更改我的 go 环境,只是暂时用于构建。
  • 省略env  部分也会使GOOS command-范围的定义;也就是说,它只对调用的子进程有效——这是类 POSIX 外壳的基本特征;验证FOO=bar date; echo $FOO
  • 哦,我不知道它是命令范围的。感谢您指出!
  • 那是defined in the spec:«“简单命令”是一系列可选变量赋值和重定向,以任意顺序,可选地后跟单词和重定向,以a结尾控制操作员。» (强调我的)。
猜你喜欢
  • 1970-01-01
  • 2010-10-06
  • 2012-12-19
  • 2016-08-18
  • 2022-12-18
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2020-08-25
相关资源
最近更新 更多