交叉编译与打包发布
交叉编译与打包发布
由于极目桌面支持在 Linux (amd64 / arm64) 以及 macOS 系统运行,Go 后端必须以 静态编译 (CGO_ENABLED=0) 的方式产出无动态依赖的单一二进制文件。
1. 推荐 Makefile
.PHONY: build build-linux clean
APP_NAME = backend
BUILD_DIR = build
build:
CGO_ENABLED=0 go build -ldflags "-s -w" -o $(BUILD_DIR)/$(APP_NAME) cmd/main.go
build-linux-amd64:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64 cmd/main.go
build-linux-arm64:
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -o $(BUILD_DIR)/$(APP_NAME)-linux-arm64 cmd/main.go
clean:
rm -rf $(BUILD_DIR)2. 发布包结构
最终打包交付给极目桌面的 ZIP 应用包结构:
my-app.zip
├── manifest.json # 应用元数据
├── conf/
│ └── config.yaml # 运行时配置
├── dist/ # 前端打包生成的静态网页产物
│ ├── index.html
│ └── assets/
└── bin/ # 静态编译的 Go 后端程序
└── backend