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)
}
相关推荐
lingggggaaaa17 小时前
PHP模型开发篇&MVC层&动态调试未授权&脆弱鉴权&未引用&错误逻辑
开发语言·安全·web安全·网络安全·php·mvc·代码审计
星原望野17 小时前
java:volatile关键字的作用
java·开发语言·volatile
APIshop17 小时前
Java获取淘宝商品价格、图片与视频:淘宝开放平台API实战指南
开发语言·python
XiYang-DING17 小时前
【Java】Map和Set
java·开发语言
小则又沐风a17 小时前
STL库: string类
开发语言·c++
菜菜小狗的学习笔记17 小时前
八股(二)Java集合
java·开发语言
星乐a17 小时前
String 不可变性与常量池深度解析
java·开发语言
captain37618 小时前
ACM模式下Java输入输出函数为什么会超时?及解决方法
java·开发语言
唐叔在学习18 小时前
Python移动端应用消息提醒开发实践
开发语言·python
SimonKing18 小时前
大V说’AI替代不了你’,但现实是——用AI的人正在替代你
java·后端·程序员