无法在win7上干净地设置GOOS环境变量

4

我正在尝试使用golang的交叉编译功能,在我的机器上(Windows 7)进行编译,以便在Linux和amd64之间进行切换。

我已经正确设置了一切,并创建了环境变量。

GOARCH = amd64
GOOS = linux

每当我尝试通过更改GOOS为Linux或amd64来切换平台时,就会出现问题。我使用Console 2来管理我的标准cmd、cygwin控制台和git控制台。 使用以下命令更改GOOS:

xset GOOS=amd64

不同的控制台显示变量值不同,例如:

//git bash
echo $GOOS
linux
//cmd
echo %GOOS%
amd64

即使重新启动了所有的控制台,该问题仍然存在。此外,我突然无法访问我的系统的某些部分! 尝试访问我的“高级系统设置” 在我的系统属性中现在会返回一个警告:
"%windir%\system32\systempropertiesadvanced.exe" could not be found.

似乎是Win7突然无法处理自己的环境变量。
这也意味着我不能再通过Windows GUI更改变量。
最重要的是,“go”命令不再绑定,我无法使用go构建任何内容。
到目前为止,我唯一的解决方案是每次更改变量时重新启动整个系统。 重启后,变量被改变,一切正常,直到我想再次改变GOOS。
我会非常感谢您提供任何形式的帮助,我是go的新手,认为我可能遗漏了一些显而易见的事情。
谢谢您提前。

你尝试过使用set或者cygwin的env代替xset吗?这可能是该程序的问题。 - Jeremiah Winsley
@JeremiahWinsley 我之前试过使用 set,但是后来转而尝试使用 xset 希望解决我的问题。不过我会尝试使用 env - Bricktop
@Bricktop,如果你只是用这个设置来编译程序,我建议使用我用的两个技巧。第一个是按命令设置,例如GOOS=linux go build xxx,当我不得不经常做这种事情时,我就会构建一个脚本。个人认为这样我的环境会变得更加干净。 - Corey Scott
@CoreyScott 我编写了两个脚本来在Windows和Linux之间切换。不幸的是,那并没有帮助我,但Philipp Franke指引了我正确的方向。 - Bricktop
1个回答

1

谢谢,这实际上就是我的问题。 我删除了一些不必要的PATH变量部分,之后一切都像魔术般地正常工作了。 原因很奇怪,但至少现在已经解决了。 - Bricktop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接