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)
}
相关推荐
陈随易15 小时前
pm2 替代品,nodejs&bun 线上部署必备工具
前端·后端·程序员
丘山一郎16 小时前
Spring 中的IOC控制反转 和DI依赖注入
java·后端·spring
码视野16 小时前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
MetaLite16 小时前
Spring-AOP自调用为什么失效-AopContext真能解决吗
java·后端·spring
西瓜很甜哟16 小时前
golang每日十题第2期
golang
m0_5474866616 小时前
《JavaScript核心原理 》全套PPT课件2026
开发语言·javascript·ecmascript
MC皮蛋侠客17 小时前
Tauri 2.x 系列(五):调用系统 API——官方插件、Rust crate 与原生能力
开发语言·后端·rust
布莱克60518 小时前
软中断和硬中断的区别
开发语言·操作系统
whcyhhh18 小时前
头歌实践教学平台:数据科学与大数据技术导论(十二)
大数据·开发语言·python·数据清洗
Profile排查笔记18 小时前
指纹浏览器怎么设置 IP?代理配置、检测与排错流程
前端·人工智能·后端·自动化