golang编译

编译时环境变量‌(如指定平台参数)仅影响编译输出,与运行环境无关

‌运行环境变量‌(如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 获取这个环境变量

}

  1. 获取环境变量

在 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)
}
相关推荐
数据知道2 小时前
Go语言:加密与解密详解
开发语言·后端·golang·go语言
武子康2 小时前
大数据-117 - Flink JDBC Sink 详细解析:MySQL 实时写入、批处理优化与最佳实践 写出Kafka
大数据·后端·flink
灰太狼大王灬3 小时前
Go 项目从开发到部署笔记
开发语言·笔记·golang
小树懒(-_-)3 小时前
SEO:Java项
java·开发语言
用户21411832636023 小时前
Qwen3-VL 接口部署全攻略:从源码到 Docker,手把手教你玩转多模态调用
后端
databook3 小时前
Manim实现旋转扭曲特效
后端·python·动效
karry_k4 小时前
ThreadLocal原理以及内存泄漏
java·后端·面试
胖咕噜的稞达鸭4 小时前
二叉树进阶面试题:最小栈 栈的压入·弹出序列 二叉树层序遍历
开发语言·c++
MrSun的博客4 小时前
数据源切换之道
后端