【问题标题】:Unable to cleanly set GOOS environment variable on win7win7无法干净设置GOOS环境变量
【发布时间】:2014-12-14 22:47:06
【问题描述】:

我正在尝试使用 golangs 交叉编译功能在我的机器(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。

我会很高兴收到任何形式的意见,我是新手,假设我遗漏了一些明显的东西。

提前致谢

【问题讨论】:

  • 您是否尝试过使用set 或cygwin 的env 而不是xset?这可能是该程序的问题。
  • @JeremiahWinsley 我之前尝试过set,然后转到xset,希望它能解决我的问题。我会尝试envthough.
  • @Bricktop 如果您只使用此设置进行编译,我会推荐我使用的 2 个技巧。第一个是根据命令设置它,例如GOOS=linux go build xxx 当我不得不经常做这种事情时,我会构建一个脚本。就我个人而言,我发现我的环境以这种方式受到的破坏更少。
  • @CoreyScott 我构建了两个脚本来在 windows 和 linux 之间切换。不幸的是,这并没有帮助,但 Philipp Franke 为我指明了正确的方向。

标签: windows go


【解决方案1】:

也许你应该检查你的环境变量,尤其是它的长度。

如果您的环境变量达到最大大小,Windows 将无法正确访问环境变量,从而导致您的错误消息。

更多信息:
Environment Variables
What happens with Path System Variable is too long?

【讨论】:

  • 谢谢,这实际上是我的问题。我删除了我的 PATH 变量的一些不需要的部分,之后一切都像魅力一样。很奇怪的原因,但至少现在已经解决了。
猜你喜欢
  • 2018-07-20
  • 2018-10-15
  • 2021-06-06
  • 1970-01-01
  • 2017-01-13
  • 2020-07-29
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多