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)
}
相关推荐
福大大架构师每日一题17 小时前
2026年1月TIOBE编程语言排行榜,Go语言排名第16,Rust语言排名13。C# 当选 2025 年度编程语言。
golang·rust·c#
JosieBook17 小时前
【开源】基于 C# 和 Halcon 机器视觉开发的车牌识别工具(附带源码)
开发语言·c#
逑之17 小时前
C语言笔记14:结构体、联合体、枚举
c语言·开发语言·笔记
BD_Marathon17 小时前
SpringBoot程序快速启动
java·spring boot·后端
崇山峻岭之间17 小时前
Matlab学习记录30
开发语言·学习·matlab
stillaliveQEJ17 小时前
【JavaEE】Spring IoC(二)
java·开发语言·spring
民乐团扒谱机17 小时前
【微实验】MATLAB 仿真实战:多普勒效应 —— 洒水车音乐的音调变化仿真
开发语言·matlab·多普勒效应·多普勒频移
寻星探路17 小时前
【Python 全栈测开之路】Python 基础语法精讲(一):常量、变量与运算符
java·开发语言·c++·python·http·ai·c#
朔北之忘 Clancy17 小时前
2020 年 6 月青少年软编等考 C 语言一级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
行百里er17 小时前
代码跑得慢?让Spring的StopWatch告诉你真相!
java·后端·github