Golang - go build打包文件

Go编译打包文件

1、简单打包

程序 main1.go:

Go 复制代码
package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
}

打包:

在linux服务上执行下面的3个命令

Go 复制代码
# linux平台,生成main1可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main1.go
# windows平台,生成main1.exe可执行程序
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main1.go
# mac平台,生成main1可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main1.go

执行:

Go 复制代码
$ ./main1
Hello World!

2、打包时为程序中的变量设置值

程序 main2.go :

Go 复制代码
package main

import "fmt"

var (
    VERSION string
    BUILD_TIME string
    GO_VERSION string
)

func main() {
    fmt.Printf("%s\n%s\n%s\n", VERSION, BUILD_TIME, GO_VERSION)
}

打包:打包方式和上面一样,这里只介绍linux下的打包。

在linux服务上执行下面的命令

Go 复制代码
# linux平台,生成main2可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`' -X 'main.GO_VERSION=`go version`'" main2.go

执行:

Go 复制代码
# 输出的时间为打包时的时间
$ ./main2
1.0.0
2023年 06月 14日 星期三 10:13:06 CST
go version go1.18.4 linux/amd64

3、打包时指定名称

Go 复制代码
# 生成linux-main1可执行文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o linux-main1 main1.go

执行:

Go 复制代码
$ ./linux-main1
Hello World!

go build的时候还有别的其它参数,如果有需要请查询相关文档。

相关推荐
用户8181870627461 小时前
第25章 Redis集群脑裂实录:一次真实故障复盘
java·后端
小七在进步1 小时前
类和对象(三)
java·开发语言
夜不会漫长1 小时前
C++:类和对象(1)
java·开发语言·c++
呃呃呃呃ex1 小时前
2026年古法编程的末法时代,如何评估自己完成迅速转行
前端·后端
czt_java1 小时前
Java文件IO核心知识点总结
java·开发语言
EatFan1 小时前
从单体到模块化:我的 Spring Boot 项目为什么拆成 framework、module、server?
java·spring boot·后端
回家路上绕了弯1 小时前
Codex 与 ZCode 有什么区别?从开发工作流看 AI 编程工具怎么选
后端
szarron1 小时前
HTOOL‑SA12 + HT06 近场探头组合实操|手持设备工位 EMI 预兼容排查完整流程
运维·服务器·开发语言·网络·射频工程·频谱仪
菜鸟~noob2331 小时前
【电子战】第07篇:多普勒测向【含matlab代码】
android·开发语言·matlab
Java内核笔记1 小时前
Spring Boot 4 可观测性源码剖析:OpenTelemetry 全链路打通日志、指标、追踪
java·后端