亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 golang 中創建靜態二進制文件所需的標志

在 golang 中創建靜態二進制文件所需的標志

Go
慕尼黑5688855 2022-06-01 10:41:21
scratch我正在使用作為基礎構建 Docker 映像。以下構建命令:RUN go build -o /go/bin/myapp創建了一個在執行時一直失敗的二進制文件:standard_init_linux.go:211: exec user process caused "no such file or directory"通過反復試驗,我發現我需要按如下方式構建:RUN CGO_ENABLED=0 go build -o /go/bin/myapp -a -ldflags '-extldflags "-static"' .為什么兩者都是必要CGO_ENABLED=0 的? -ldflags '-extldflags "-static"'兩個選項都不創建靜態二進制文件嗎?(即,在它們將運行的環境中完全不需要庫的二進制文件?)
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

就在我們開始之前,Russ Cox 的提醒:評論

也請閱讀:評論

是的,我同意 Volker 的評論,即某些系統實際上并不允許靜態二進制文件。

繼續閱讀:編譯包和依賴項

-a

    force rebuilding of packages that are already up-to-date.


-ldflags '[pattern=]arg list'

    arguments to pass on each go tool link invocation.

閱讀:去工具鏈接


-extldflags flags

    Set space-separated flags to pass to the external linker.

因此,它會嘗試在禁用 CGO 的情況下重建所有包(以及依賴項),也-static意味著不要鏈接到共享庫。


一些與靜態鏈接相關的點解釋得很好:Linking golang statically


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號