【发布时间】: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 为我指明了正确的方向。