Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
D
development_resource_index
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 68
    • Issues 68
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • yuan
  • development_resource_index
  • Issues
  • #23

Closed
Open
Created Nov 24, 2019 by joker@jokerReporter

Golang 編譯相關

env GOOS=linux GOARCH=amd64 go build -o {executable name} {main function entry file path}

註:在使用 Git bash 的情況下


另外如遇到執行環境版本為 Linux 下無法支援 C 函式庫的調用錯誤訊息(錯誤訊息如下):

./{executable name}: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./{executable name})
./{executable name}: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./{executable name})

可在編譯時的環境變數再加上 CGO_ENABLED=0 以禁用 C 代碼或是函式庫。

env GOOS=linux CGO_ENABLED=0 go build -o {executable name} {main function entry file path}

參考來源: https://stackoverflow.com/questions/64421305/heroku-go-app-crashes-version-glibc-2-32-not-found-required-by-bin-main


[補充資料]
如果想要得知編譯後的執行檔當初是由哪個 Golang 版本編譯出來的,可以使用以下方式檢查執行檔編譯時期附加的 metadata:

# 取得 Golang 版本號

strings {executable name} | grep "^go[0-9]\.[\.|0-9]*"

# 取得當下版本控制提交雜湊 ID

strings {executable name} | grep "vcs.revision"

* 可切換到指定分支並使用 git rev-parse HEAD 檢查 commit hash 是否一致

# 指定鏈接器標誌的選項;允許傳遞參數給鏈接器,通常用於指定版本訊息或是初始化執行檔設定,以下範例為指定執行檔版本號

go build -ldflags '-X main.version=1.0.0'

# 指定編譯器標誌的選項;允許傳遞參數給編譯器,通常用於欲進行優化作業的詳細資訊查看,以下範例為查看變數逃逸分析 (heap & stack)

go build -gcflags '-m -l'
Edited Jan 16, 2025 by yuan
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None