编译时环境变量(如指定平台参数)仅影响编译输出,与运行环境无关
运行环境变量(如GOROOT/GOPATH)需在新机器重新配置
指定环境变量法
IDE
goland 编译选项 enviroment 填入CGO_ENABLED=0;GOOS=linux;GOARCH=amd64;GF_GCFG_FILE=config.dev.yaml
仅本次生效 之后会还原
手动填写
或者在build之前手动填写
win
cmd windows
go
set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build -o text text.go
CGO_ENABLED=0关闭CGO以避免动态链接库依赖问题
在 Windows 系统中通过 SET 命令修改环境变量仅在命令行窗口有效,关闭后恢复默认设置
注意 goland 的win版本默认使用powershell 导致无效
需要 这样
go
$env:GOOS="linux"
unix
在 Unix-like 系统(如 Linux 或 macOS)中使用:
bash
Copy Code
export MY_VAR="some_value"
检查
完成后 用go env
查看修改成功没有
makefile法
通过编写 Makefile,您可以直接在 Makefile 中定义 GOOS 和 GOARCH 变量,从而避免手动切换环境变量。例如:
此命令将直接在 Linux 环境下进行交叉编译,无需手动设置和恢复 GOOS。
build标签
命令行参数
注意 如果你用了-o会覆盖goland输出目录设置
-o build -o /path/to/your/output/directory/your-program-name
go程序中设置环境变量
在 Go 程序中设置
在 Go 程序中,你可以使用 os.Setenv 函数来设置环境变量:
go
Copy Code
package main
import (
"os"
)
func main() {
os.Setenv("MY_VAR", "some_value")
// 现在你可以通过 os.Getenv 获取这个环境变量
}
- 获取环境变量
在 Go 程序中,你可以使用 os.Getenv 函数来获取环境变量的值:
go
Copy Code
package main
import (
"fmt"
"os"
)
func main() {
value := os.Getenv("MY_VAR")
fmt.Println("MY_VAR:", value)
}
使用ldflags传递配置
对于需要传递配置信息到最终二进制文件的情况,可以使用-ldflags参数:
go
go build -ldflags "-X main.Version=1.0.0"
这里main.Version是Go代码中的一个变量,你可以在代码中这样访问它:
go
package main
import "fmt"
var Version string
func main() {
fmt.Println("Version:", Version)
}