在 Ubuntu 下使用 Golang 编译程序时,有几个常见但容易忽略的点,下面按环境、编译、依赖、部署几方面总结:
Ubuntu 自带的 golang 通常较旧:
sudo apt install golang
go version
建议从官网下载:
wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz
并配置:
export PATH=$PATH:/usr/local/go/bin
go env -w GO111MODULE=on
go mod init example.com/project
go mod tidy
在 Ubuntu 编译其他平台程序:
# Windows
GOOS=windows GOARCH=amd64 go build -o app.exe
# macOS
GOOS=darwin GOARCH=arm64 go build
查看支持平台:
go tool dist list
默认 Go 已是静态链接,但 CGO 会破坏:
CGO_ENABLED=0 go build
否则可能报:
not found libc.so
go build -ldflags "-s -w"
进一步可用 upx:
upx app
go env -w GOPROXY=https://proxy.golang.com.cn,direct
sudo go buildsudo cp示例:
[Unit]
Description=Go App
[Service]
ExecStart=/opt/app/app
WorkingDirectory=/opt/app
Restart=always
[Install]
WantedBy=multi-user.target
command not found: go → PATH 未配置cannot find package → go mod 未初始化permission denied → 文件无执行权限chmod +x app
如果你能说明:
我可以给你更针对性的建议。