在 Ubuntu 下使用 Go(Golang)编译“包”(package),需要先明确你说的**“包”**是指哪一种:
Go 中 非 main 包不能直接生成可执行文件,只能被其他包导入使用。
// mypkg/mypkg.go
package mypkg
func Add(a, b int) int {
return a + b
}
go build ./mypkg
如果没报错,说明包编译通过。
go install ./mypkg
只有 package main 才能编译成可执行文件。
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello Ubuntu")
}
go build main.go
生成:
./main
go build -o myapp main.go
go run main.go
项目结构示例:
myproject/
├── go.mod
├── main.go
└── mypkg/
└── mypkg.go
cd myproject
go mod init myproject
go build ./...
go build -o app .
例如在 Ubuntu 上编译 Windows 程序:
GOOS=windows GOARCH=amd64 go build -o app.exe main.go
| 命令 | 作用 |
|---|---|
go build |
编译包或程序 |
go install |
编译并安装 |
go run |
编译并运行 |
go mod init |
初始化模块 |
go clean |
清理编译文件 |
如果你指的是 “如何把 Go 包编译成 .so / 静态库 / 给别人用的包”,可以告诉我,我可以单独讲。