溫馨提示×

Golang在Ubuntu上編譯流程是什么

小樊
36
2025-09-25 06:44:10
欄目: 編程語言

Golang在Ubuntu上的編譯流程

1. 準備工作:安裝Golang環境

在編譯Golang程序前,需先安裝Golang編譯器。有兩種常見方式:

  • 通過APT包管理器安裝(快速,適合大多數場景)
    運行以下命令更新包列表并安裝Golang:
    sudo apt update
    sudo apt install golang-go
    
  • 從源碼編譯安裝(適合需要特定版本或自定義的場景)
    先安裝依賴項(Git、GCC、Make):
    sudo apt update
    sudo apt install -y git gcc make
    
    克隆Go官方源碼倉庫:
    git clone https://github.com/golang/go.git
    cd go/src
    
    設置環境變量(用于編譯Go本身):
    export GOROOT_BOOTSTRAP=$(pwd)/../..
    export PATH=$GOROOT_BOOTSTRAP/bin:$PATH
    
    編譯Go源碼:
    cd $GOROOT
    ./all.bash
    
    編譯完成后,Go會安裝在$HOME/go目錄(源碼編譯方式)或/usr/local/go目錄(APT安裝方式)。

2. 配置環境變量

無論通過哪種方式安裝,都需要配置環境變量以讓系統識別Golang命令:
編輯~/.bashrc~/.profile文件,添加以下內容:

export PATH=$PATH:/usr/local/go/bin  # 替換為源碼編譯的安裝路徑(如$HOME/go/bin)
export GOPATH=$HOME/go              # 設置工作目錄(存放代碼和依賴)
export GOBIN=$GOPATH/bin            # 設置二進制文件輸出目錄
export GO111MODULE=on               # 啟用Go Modules(推薦,管理依賴)

使配置生效:

source ~/.bashrc  # 或 source ~/.profile

驗證安裝:

go version

若輸出類似go version go1.21.0 linux/amd64,則說明安裝成功。

3. 編寫Golang程序

創建項目目錄(推薦使用Go Modules管理依賴):

mkdir -p $GOPATH/src/myproject
cd $GOPATH/src/myproject

初始化Go模塊(生成go.mod文件,記錄依賴信息):

go mod init myproject

創建main.go文件,編寫示例程序:

package main
import "fmt"
func main() {
    fmt.Println("Hello, Ubuntu Golang!")
}

4. 編譯Golang程序

  • 編譯單個文件
    main.go所在目錄運行:

    go build main.go
    

    生成的可執行文件默認命名為main(Windows下為main.exe)。

  • 編譯整個項目
    在項目根目錄(含go.mod文件)運行:

    go build
    

    會自動編譯項目中的所有依賴,并生成可執行文件。

  • 交叉編譯(為其他平臺編譯)
    例如,為Linux 64位系統編譯(無需CGO):

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myproject-linux
    

    生成的myproject-linux可在Linux服務器上運行。

5. 運行編譯后的程序

  • 若使用go build生成可執行文件,直接運行:

    ./main  # 或 ./myproject-linux(交叉編譯后的文件)
    

    輸出:Hello, Ubuntu Golang!

  • 若使用go run直接運行(無需生成可執行文件):

    go run main.go
    

    效果與go build后運行一致。

6. 可選:使用Go Modules管理依賴

若項目需要第三方庫,可通過go get命令下載并添加到go.mod文件:

go get github.com/gin-gonic/gin  # 示例:下載Gin框架

之后運行go buildgo run時,Golang會自動處理依賴關系。

以上流程覆蓋了Golang在Ubuntu上的完整編譯過程,從環境準備到程序運行,適用于大多數開發場景。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女