首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Windows上交叉编译Golang程序时限制环境变量的命令

在Windows上交叉编译Golang程序时限制环境变量的命令
EN

Stack Overflow用户
提问于 2014-02-17 01:26:03
回答 2查看 1.2K关注 0票数 1

我在Windows上交叉编译用于Linux的Golang程序,使用:

代码语言:javascript
运行
复制
go build -o myprog.bin myprog.go

为此,我必须设置环境变量GOOS=linux。由于我还在为windows编译一些程序,当我完成交叉编译时,我必须重新设置GOOS=windows。所以我有一个批处理文件,如下所示:

代码语言:javascript
运行
复制
set GOOS=linux
go build -o myprog.bin myprog.go
set GOOS=windows

如果我碰巧同时为每个Linux和Windows编译两个程序,windows程序可能会被编译为Linux。是否有方法将环境变量的范围限制在windows上的命令上,或者为命令重写它?例如

代码语言:javascript
运行
复制
go build -o myprog.bin myprog.go -GOOS linux

我知道goxc提供了这个,但是可以去构建吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-17 03:36:11

为了构建Greg的答案(它解释了使用set命令进行的更改仅限于进程),如果您想限制进程中环境变量更改的范围,请使用setlocalendlocal命令。这允许您在单个命令进程中隔离变量。

代码语言:javascript
运行
复制
setlocal
set GOOS=linux
go build -o myprog.bin myprog.go
endlocal
:: GOOS will now equal what it was before being set within the scope
票数 1
EN

Stack Overflow用户

发布于 2014-02-17 01:28:02

环境变量是设置它们的进程的本地变量(以及该进程的后代)。因此,当您执行set GOOS=linux时,更改只发生在该命令处理器中,而不影响任何其他现有进程。从该命令处理器内部启动的新进程继承其环境变量的当前值。

因此,简单地说,您的set GOOS=linux解决方案与set GOOS=windows后面的解决方案将运行良好,并且不存在干扰其他同步构建的风险。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21819234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档