在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 執行時間和任何必要的外部依賴項它的可執行程式碼。這確保了二進位檔案可以在任何環境中執行,而不需要額外的執行時間元件或動態連結。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3