我需要在Macbook Pro 2019上针对Amazon AWS EC2 Linux实例编译Go二进制文件。这是屏幕截图(我在很多地方都找不到答案的地方进行搜索):
我在MacBook Pro上尝试了以下命令:
sudo $GOOS=linux GOARCH=amd64 go build -o main
我得到了错误:
zsh:找不到Linux
我编写了此命令来获取可以交叉编译的平台列表,您可以看到Linux也有一个选项,但它会引发错误:
答案 0 :(得分:2)
删除GOOS前面的$。
GOOS = linux GOARCH = amd64转到构建-o main
答案 1 :(得分:1)
我认为您应该在GOOS之前不带$进行测试
sudo GOOS=linux GOARCH=amd64 go build -o main
答案 2 :(得分:0)
尽管罗素·史密斯(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
下一步是“ =”-扩展,因为此行中的第二个单词以等号开头。通常,单词=something
在PATH中搜索名为 something 的程序,并将该单词替换为完整路径名。您可以通过执行echo =cat
(在我的平台上输出/usr/bin/cat
)来尝试使用此功能。
由于PATH中没有名为linux
的程序,因此命令失败。
顺便说一句,如果您已启用
set -u
在您的shell中,zsh会抱怨您使用的变量GDOS尚无值;这将使您很容易发现错误。