在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