在本文中,我们展示了如何在Golang中使用gobuild工具构建可执行文件。
Golang自带go
工具,用于管理Go源代码。它有几个命令,包括doc、build、test和run。
gobuild命令将导入路径命名的包及其依赖项编译成可执行文件。它不安装可执行文件。
usage: go build [-o output] [build flags] [packages]
这是命令的语法。
$ go version go version go1.18.1 linux/amd64
我们使用Go版本1.18。
Go构建示例
接下来我们构建一个简单的Go代码示例。
$ mkdir simple $ cd simple
我们创建并进入项目目录。
$ go mod init com.zetcode/simple
我们使用gomodinit
命令创建一个新模块。它生成一个go.mod
文件。
package main import ( "fmt" "runtime" ) func main() { go_ver := runtime.Version() os_ver := runtime.GOOS arch := runtime.GOARCH fmt.Println(go_ver) fmt.Println(os_ver) fmt.Println(arch) }
程序打印Go版本、操作系统名称和体系结构。
$ go run main.go go run main.go go1.18.1 amd64 linux
gorun
命令编译并运行Go程序,但它不构建任何可执行文件。
$ go build $ ls go.mod main.go simple
可执行文件是使用gobuild
命令构建的。
$ ./simple go1.18.1 amd64 linux
我们运行二进制文件。
$ file simple simple: ELF 64-bit LSB executable, x86-64, version 1 (SYSV) ...
我们使用文件
工具检查程序。
$ go build -o bin/simple $ tree . âââ bin â âââ simple âââ go.mod âââ main.go âââ simple
通过-o
选项,我们可以将二进制文件输出到指定目录。
module com.zetcode/first go 1.18
要更改默认的可执行文件名称,我们更新模块名称的最后一部分。
$ go build $ ./first go1.18.1 amd64 linux
我们以不同的名称构建和运行该程序。
构建过程包括两个步骤:编译和链接。我们使用gotool
命令显示这两个步骤。
$ go tool compile main.go
我们编译程序。生成一个main.o
文件。
$ file main.o main.o: current ar archive $ ar t main.o __.PKGDEF _go_.o
它是一个中间存档文件。
$ go tool link -o simple main.o
使用gotoollink
,我们生成最终的可执行文件。
接下来,我们在Windows上构建程序。这个过程非常相似。
$ mkdir simple $ cd simple $ go mod init com.zetcode/simple go: creating new go.mod: module com.zetcode/simple
我们创建一个项目目录,然后创建一个Go模块。我们使用相同的main.go
源文件。
$ go build $ ls go.mod main.go simple.exe
我们构建程序。在Windows上,可执行文件具有.exe
后缀。
$ simple.exe go1.18.1 windows amd64
我们运行程序。
$ file simple.exe simple.exe: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows
我们使用file
命令检查程序。
在本教程中,我们使用了gobuild命令。
列出所有Go教程。