在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中文網其他相關文章!