在 Linux 上编译 Go 程序可以分为以下几个步骤:
首先确保你的 Linux 系统已经安装了 Go。如果没有安装,可以按照以下步骤安装:
# 下载最新版本的 Go (替换为最新版本号)
wget https://golang.org/dl/go1.21.0.linux-amd64.tar.gz
# 解压到 /usr/local
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
# 将 Go 添加到 PATH 环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# 验证安装
go version
# Ubuntu/Debian
sudo apt update
sudo apt install golang
# CentOS/RHEL
sudo yum install golang
创建一个简单的 Go 程序,例如 main.go
:
package main
import "fmt"
func main() {
fmt.Println("Hello, Linux!")
}
在 Linux 上编译 Go 程序有几种方式:
go build main.go
这会生成一个与当前系统架构匹配的可执行文件(默认为当前目录下的 main
)
go build -o myapp main.go
Go 支持交叉编译,可以为其他平台生成可执行文件:
# 编译为 Linux 64 位
GOOS=linux GOARCH=amd64 go build -o myapp-linux main.go
# 编译为 Windows
GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go
# 编译为 MacOS
GOOS=darwin GOARCH=amd64 go build -o myapp-macos main.go
./main
# 或
./myapp
如果你的项目有依赖,可以使用:
go mod init <module-name>
go mod tidy
# 禁用调试信息,减小二进制大小
go build -ldflags="-s -w" -o myapp main.go
# 完全静态编译(不依赖 glibc)
CGO_ENABLED=0 go build -a -installsuffix cgo -o myapp main.go
对于复杂项目,可以创建 Makefile:
build:
go build -o bin/myapp cmd/main.go
clean:
rm -f bin/myapp
.PHONY: build clean
找不到 go 命令:
source ~/.bashrc
或重新登录权限问题:
chmod +x
给可执行文件添加权限依赖问题:
CGO 相关问题:
CGO_ENABLED=0
通过以上步骤,你应该能够在 Linux 上成功编译 Go 程序。Go 的编译过程非常高效,通常只需几秒钟即可完成。