在Ubuntu上安裝Golang有兩種常用方式:通過APT包管理器安裝(穩定版本)或手動下載安裝(最新版本)。
sudo apt update
sudo apt install golang-go
https://golang.org/dl/
),下載適合Ubuntu的.tar.gz
文件(如go1.23.0.linux-amd64.tar.gz
);/usr/local
目錄:wget https://golang.org/dl/go1.23.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
驗證安裝:運行go version
,若顯示Go版本信息(如go1.23.0 linux/amd64
),則說明安裝成功。
為了讓系統識別Go命令并管理項目依賴,需配置GOROOT
(Go安裝路徑)、GOPATH
(工作空間)和PATH
(可執行文件路徑)。
~/.bashrc
文件(或~/.zshrc
,若使用Zsh):nano ~/.bashrc
export GOROOT=/usr/local/go # Go安裝目錄
export GOPATH=$HOME/go # 工作空間(存放項目代碼和依賴)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加Go命令到PATH
export GO111MODULE=on # 啟用Go模塊(推薦)
export GOPROXY=https://goproxy.cn,direct # 國內鏡像加速依賴下載
source ~/.bashrc
驗證環境變量:
echo $GOROOT
,應輸出/usr/local/go
;echo $GOPATH
,應輸出$HOME/go
(如/home/username/go
)。mkdir -p $GOPATH/src/myproject
cd $GOPATH/src/myproject
main.go
):package main
import "fmt"
func main() {
fmt.Println("Hello, Ubuntu Golang!")
}
go run main.go
若終端輸出Hello, Ubuntu Golang!
,則說明項目運行正常。本地打包(生成可執行文件):
在項目目錄下運行go build
命令,生成與項目同名的可執行文件:
go build -o myproject
執行./myproject
,將輸出Hello, Ubuntu Golang!
。
交叉編譯(為其他平臺打包):
Go支持跨平臺編譯,只需設置GOOS
(目標操作系統)和GOARCH
(目標架構)環境變量。例如:
GOOS=windows GOARCH=amd64 go build -o myproject.exe
GOOS=darwin GOARCH=amd64 go build -o myproject
生成的可執行文件可直接在對應平臺運行。
靜態鏈接(減少依賴):
若需生成不依賴系統庫的可執行文件(適用于容器或無Go環境的系統),設置CGO_ENABLED=0
:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myproject
此時可執行文件體積較大,但無需額外庫支持。
壓縮二進制文件:
使用upx
工具壓縮可執行文件(減小體積):
sudo apt install upx # 安裝upx
upx --best myproject # 壓縮(--best表示最高壓縮率)
壓縮后文件體積可減少50%~70%。
自動化打包(Makefile/Shell腳本):
Makefile示例:
在項目根目錄創建Makefile
文件:
GO := go
PROJECT := myproject
OUTPUT := bin/$(PROJECT)
BUILD_ENV := CGO_ENABLED=0 GOOS=linux GOARCH=amd64
all: build
build:
$(GO) build -o $(OUTPUT) $(BUILD_ENV) .
clean:
rm -f $(OUTPUT)
運行make
執行構建,make clean
清理生成的文件。
Shell腳本示例(build.sh
):
#!/bin/bash
GO := go
PROJECT := myproject
OUTPUT := bin/$(PROJECT)
BUILD_ENV := CGO_ENABLED=0 GOOS=linux GOARCH=amd64
case "$1" in
build)
echo "Building $(PROJECT)..."
$(GO) build -o $(OUTPUT) $(BUILD_ENV) .
;;
clean)
echo "Cleaning..."
rm -f $(OUTPUT)
;;
*)
echo "Usage: $0 {build|clean}"
exit 1
;;
esac
給腳本添加執行權限:chmod +x build.sh
,運行./build.sh build
執行構建。
使用Docker將Go項目打包為鏡像,便于部署到任何支持Docker的環境。
Dockerfile
:Dockerfile
文件:# 使用官方Go鏡像作為構建環境
FROM golang:1.23-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -o myproject .
# 使用輕量級scratch鏡像作為運行環境
FROM scratch
COPY --from=builder /app/myproject /myproject
ENTRYPOINT ["/myproject"]
docker build -t myproject-app .
docker run --rm myproject-app
容器將輸出Hello, Ubuntu Golang!
。通過以上步驟,你已在Ubuntu上成功配置Golang打包環境,可實現本地/跨平臺打包、優化及容器化部署。根據項目需求選擇合適的打包方式即可。