首頁 > 後端開發 > Golang > 如何使用 Docker Scratch 在 Golang 中建立靜態二進位檔案:CGO_ENABLED=0 和 -ldflags?

如何使用 Docker Scratch 在 Golang 中建立靜態二進位檔案:CGO_ENABLED=0 和 -ldflags?

Linda Hamilton
發布: 2024-10-30 04:59:28
原創
714 人瀏覽過

 How to Create Static Binaries in Golang with Docker Scratch: CGO_ENABLED=0 and -ldflags?

在Golang 中建立靜態二進位檔案的標誌

使用Docker 暫存程式庫在Golang 中建置靜態二進位檔案時,必須包含CGO_ENABLED = 0 和-ldflags '-extldflags "-static"' 標誌。雖然這兩個選項似乎都是多餘的,但它們在實現靜態二進位方面發揮著不同的作用。

CGO_ENABLED=0

此標誌停用在 Go 運行時中使用 C 程式碼。 CGO (C Go) 允許與 Go 程式中的 C 程式碼互動。透過設定 CGO_ENABLED=0,可以防止 Go 嘗試連結任何 C 庫,從而確保建置的二進位檔案是自給自足的。

-ldflags '-extldflags "-static"'

此標誌指示連結器在連結外部函式庫時使用 -static 選項。 -static 告訴連結器將所有依賴項靜態地包含在二進位檔案中,而不是依賴它們存在於執行時間環境中。這消除了運行時庫查找的需要,並使二進位檔案獨立於外部庫的可用性。

透過組合這兩個標誌,您可以確保建置的二進位檔案是完全靜態的,包含 Go 執行時間和任何必要的外部依賴項它的可執行程式碼。這確保了二進位檔案可以在任何環境中執行,而不需要額外的執行時間元件或動態連結。

以上是如何使用 Docker Scratch 在 Golang 中建立靜態二進位檔案:CGO_ENABLED=0 和 -ldflags?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板