转载请注明出处:
一、Go Build 简要用法
核心作用
-
编译Go代码生成可执行文件
-
适合快速编译和简单项目
常用命令
# 基本编译
go build # 编译当前目录
go build -o app ./cmd/main # 指定输出文件
# 交叉编译
GOOS=linux GOARCH=amd64 go build # Linux版本
GOOS=windows go build # Windows版本
应用

二、Makefile 简要用法
核心作用
-
自动化构建流程,统一团队操作
-
管理复杂依赖关系和构建步骤
-
标准化开发、测试、部署流程
基本结构
# 变量定义
APP = myapp
VERSION = 1.0.0
# 目标: 依赖
build: fmt test
go build -o $(APP)
# 伪目标
.PHONY: clean
clean:
rm -f $(APP)
关键优势
-
统一入口:团队使用相同命令
-
复杂流程简化:一键完成多个步骤
-
环境一致性:避免环境差异问题
-
文档作用:Makefile即构建文档
模板
# 最小可用 Makefile
.PHONY: help build test clean
help:
@echo "make build - 编译项目"
@echo "make test - 运行测试"
@echo "make clean - 清理文件"
build:
go build -o bin/app ./cmd/main
test:
go test ./... -v
clean:
rm -rf bin/
应用:
EXE_LINUX=monitor
EXE_ARM64=monitor-arm64
EXE_DBG_LINUX=monitor-dbg
EXE_DBG_ARM64=monitor-dbg-arm64
all: monitor monitor-arm64
monitor: commit_id
mkdir -p ../bin
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -tags 'pe' -o ../bin/$(EXE_LINUX) ./cmd/monitor.go
cp ./cmd/monitor_no.conf ../bin/monitor.conf
monitor-arm64: commit_id
mkdir -p ../bin
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -tags 'pe' -o ../bin/$(EXE_ARM64) ./cmd/monitor.go
cp ./cmd/monitor_no.conf ../bin/monitor.conf
monitor-dbg: commit_id
mkdir -p ../bin
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -gcflags "all=-N -l" -tags 'pe' -o ../bin/$(EXE_DBG_LINUX) ./cmd/monitor.go
monitor-dbg-arm64: commit_id
mkdir -p ../bin
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -gcflags "all=-N -l" -tags 'pe' -o ../bin/$(EXE_DBG_ARM64) ./cmd/monitor.go
运行编译:
root@xdd-virtual-machine:~/zeng/terra-monitor-23/terra-monitor/src# make all
mkdir -p ../bin
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -tags 'pe' -o ../bin/monitor ./cmd/monitor.go
cp ./cmd/monitor_no.conf ../bin/monitor.conf
mkdir -p ../bin
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -tags 'pe' -o ../bin/monitor-arm64 ./cmd/monitor.go
cp ./cmd/monitor_no.conf ../bin/monitor.conf