在Ubuntu上编译Golang程序时,可以使用以下编译选项:
设置目标操作系统和架构:
GOOS 和 GOARCH 环境变量来指定目标操作系统和架构。例如:export GOOS=linux
export GOARCH=amd64
go build -o hello-linux-amd64 main.go
禁用CGO:
CGO_ENABLED=0 go build -o myapp
启用编译缓存:
-buildcache=true 选项启用编译缓存,避免重复编译已经编译过的模块。例如:go build -buildcache=true -o myapp
优化编译选项:
-c 选项仅编译,不链接,减少编译时间。-s 选项去除调试信息,减小编译文件大小及编译时间。-ldflags="-s -w" 选项去除符号表和调试信息,进一步减小二进制文件大小。例如:go build -ldflags="-s -w" -o myapp
并行编译:
-p 选项设置并行编译的goroutine数量,例如使用4个并行goroutine进行编译:go build -p 4 -o myapp
使用构建标签:
// +build linux,amd64 标签,确保只有在目标平台为 Linux amd64 时才会编译此文件。例如:// +build linux,amd64
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
指定C编译器或C++编译器:
CC 和 CXX 环境变量指定C或C++编译器。例如:CC=/usr/bin/gcc GOOS=linux GOARCH=amd64 go build -o myapp
CXX=/usr/bin/g++ GOOS=linux GOARCH=amd64 go build -o myapp
交叉编译:
CGO_ENABLED=0 并指定目标操作系统和架构。例如,在Windows上交叉编译Linux可执行文件:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o hello_linux main.go