Golang打包有两种方式:交叉编译和打包成静态二进制文件。
1. 交叉编译
交叉编译是将Golang程序编译成可运行在其他平台的可执行文件。例如,在MacOS上编译Linux可执行文件,或在Windows上编译MacOS可执行文件。
交叉编译需要安装对应平台的Golang编译器。例如,在MacOS上编译Linux可执行文件需要安装Linux的Golang编译器。
示例代码:
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
假设我们要将该程序交叉编译成Linux可执行文件。
首先,需要安装Linux的Golang编译器:
sudo apt-get update
sudo apt-get install golang
然后,执行以下命令进行编译:
GOOS=linux GOARCH=amd64 go build -o hello-linux main.go
其中,`GOOS=linux`表示编译成Linux可执行文件,`GOARCH=amd64`表示使用64位架构,`-o hello-linux`表示输出文件名为hello-linux。
2. 打包成静态二进制文件
打包成静态二进制文件可以使得程序更加方便地部署在不同的机器上,不需要安装对应平台的Golang编译器。
示例代码:
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
执行以下命令进行打包:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o hello main.go
其中,`CGO_ENABLED=0`表示不使用C语言库,`GOOS=linux`表示打包成Linux可执行文件,`GOARCH=amd64`表示使用64位架构,`-a`表示重新编译所有依赖包,`-o hello`表示输出文件名为hello。
可以通过执行`hello`文件验证打包是否成功。
以上就是Golang打包的两种方式,可以根据实际需求选择。