交叉编译
Go交叉编译需要设置以下环境变量:
CGO_ENABLED=0
GOOS=darwin
GOARCH=amd64
其中,GOOS是目标平台的操作系统,支持以下操作系统:
aix
android
darwin
dragonfly
freebsd
hurd
illumos
js
linux
nacl
netbsd
openbsd
plan9
solaris
windows
zos
GOARCH是目标平台的架构,一般为下列值:
386
amd64
amd64p32
arm
armbe
arm64
arm64be
ppc64
ppc64le
mips
mipsle
mips64
mips64le
mips64p32
mips64p32le
ppc
riscv
riscv64
s390
s390x
sparc
sparc64
wasm
配置好环境变量后,就可以运行go build了
去除调试信息
编译成可执行文件后,如果报错的话,可执行文件还是会携带上编译该文件的电脑上的路径信息,如:
panic: XXXXXXXXXX.
goroutine 1 [running]:
main/test(0xc000060240, 0x232, 0xc000074120, 0x82, 0x0, 0x0, 0xc00000a5a0, 0x2a, 0x1, 0x0, ...)
E:/program/Go/main.go:31 +0x35f
main.main()
E:/program/Go/main.go:49 +0x9b8
如果想去除这些调试信息,可以在运行go build时指定如下参数:
-ldflags '-s -w' -gcflags='all=-trimpath=${PWD}' -asmflags='all=-trimpath=${PWD}'
如:
go build -ldflags '-s -w' -gcflags='all=-trimpath=${PWD}' -asmflags='all=-trimpath=${PWD}' main.go
引用