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)
}
相关推荐
开心就好20251 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
悟空码字1 小时前
告别“屎山代码”:AI 代码整洁器让老项目重获新生
后端·aigc·ai编程
小码哥_常1 小时前
大厂不宠@Transactional,背后藏着啥秘密?
后端
奋斗小强1 小时前
内存危机突围战:从原理辨析到线上实战,彻底搞懂 OOM 与内存泄漏
后端
小码哥_常2 小时前
Spring Boot接口防抖秘籍:告别“手抖”,守护数据一致性
后端
心之语歌2 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
None3212 小时前
【NestJs】基于Redlock装饰器分布式锁设计与实现
后端·node.js
初次攀爬者2 小时前
Kafka + KRaft模式架构基础介绍
后端·kafka
洛森唛2 小时前
Elasticsearch DSL 查询语法大全:从入门到精通
后端·elasticsearch
拳打南山敬老院3 小时前
Context 不是压缩出来的,而是设计出来的
前端·后端·aigc