在 Macbook Pro 2019 上为 Amazon AWS EC2 交叉编译 Go 二进制文件
Cross compile Go binaries on Macbook Pro 2019 for Amazon AWS EC2
我需要在 Macbook Pro 2019 上为 Amazon AWS EC2 Linux 实例编译 Go 二进制文件。这是屏幕截图(我搜索了很多地方都找不到答案):
我在我的 MacBook pro 上试过这个命令:
sudo $GOOS=linux GOARCH=amd64 go build -o main
我收到错误:
zsh: linux not found
我写这个命令是为了获取它可以交叉编译的平台列表,你可以看到 Linux 也有一个选项,但它会抛出错误:
去掉GOOS前面的$。
GOOS=linux GOARCH=amd64 go build -o main
我认为你应该在 GOOS 之前不使用这个 $ 进行测试
sudo GOOS=linux GOARCH=amd64 go build -o main
虽然 Russell Smith 和 Allan Jacquet 的回答正确地解释了如何正确地做到这一点,但他们没有解释,为什么 你得到的正是那个错误消息。
您被两个一起工作的 zsh 属性所困扰:参数扩展和(不太明显的)'='-扩展。
听从您的指挥
sudo $GOOS=linux GOARCH=amd64 go build -o main
zsh先代入参数。这里有一个参数替换,$GDOS
,zsh 将其替换为变量 GDOS
的内容。假设此时此变量不存在或为空,这将导致行
sudo =linux GOARCH=amd64 go build -o main
下一步是“=”扩展,因为该行中的第二个单词以 equal-sign 开头。通常,单词 =something
在 PATH 中搜索名为 something 的程序,并用完整路径名替换该单词。您可以通过执行 echo =cat
(在我的平台上输出 /usr/bin/cat
)来尝试此功能。
由于您的 PATH 中没有名为 linux
的程序,因此命令失败。
顺便说一句,如果你启用了
set -u
在你的 shell 中,zsh 会抱怨你正在使用一个还没有值的变量 GDOS;这会让您很明显地发现错误。
我需要在 Macbook Pro 2019 上为 Amazon AWS EC2 Linux 实例编译 Go 二进制文件。这是屏幕截图(我搜索了很多地方都找不到答案):
我在我的 MacBook pro 上试过这个命令:
sudo $GOOS=linux GOARCH=amd64 go build -o main
我收到错误:
zsh: linux not found
我写这个命令是为了获取它可以交叉编译的平台列表,你可以看到 Linux 也有一个选项,但它会抛出错误:
去掉GOOS前面的$。
GOOS=linux GOARCH=amd64 go build -o main
我认为你应该在 GOOS 之前不使用这个 $ 进行测试
sudo GOOS=linux GOARCH=amd64 go build -o main
虽然 Russell Smith 和 Allan Jacquet 的回答正确地解释了如何正确地做到这一点,但他们没有解释,为什么 你得到的正是那个错误消息。
您被两个一起工作的 zsh 属性所困扰:参数扩展和(不太明显的)'='-扩展。
听从您的指挥
sudo $GOOS=linux GOARCH=amd64 go build -o main
zsh先代入参数。这里有一个参数替换,$GDOS
,zsh 将其替换为变量 GDOS
的内容。假设此时此变量不存在或为空,这将导致行
sudo =linux GOARCH=amd64 go build -o main
下一步是“=”扩展,因为该行中的第二个单词以 equal-sign 开头。通常,单词 =something
在 PATH 中搜索名为 something 的程序,并用完整路径名替换该单词。您可以通过执行 echo =cat
(在我的平台上输出 /usr/bin/cat
)来尝试此功能。
由于您的 PATH 中没有名为 linux
的程序,因此命令失败。
顺便说一句,如果你启用了
set -u
在你的 shell 中,zsh 会抱怨你正在使用一个还没有值的变量 GDOS;这会让您很明显地发现错误。