«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать статические двоичные файлы в Golang с помощью Docker Scratch: CGO_ENABLED=0 и -ldflags?

Как создать статические двоичные файлы в Golang с помощью Docker Scratch: CGO_ENABLED=0 и -ldflags?

Опубликовано 6 ноября 2024 г.
Просматривать:720

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

Флаги для создания статических двоичных файлов в Golang

При создании статического двоичного файла в Golang с использованием скретч-базы Docker важно включить оба CGO_ENABLED =0 и -ldflags '-extldflags "-static"' флаги. Хотя оба варианта могут показаться излишними, они играют разную роль в создании статических двоичных файлов.

CGO_ENABLED=0

Этот флаг отключает использование кода C в среде выполнения Go. CGO (C Go) позволяет взаимодействовать с кодом C внутри программ Go. Установив CGO_ENABLED=0, вы предотвращаете попытки Go связать любые библиотеки C, гарантируя, что построенный двоичный файл является самодостаточным.

-ldflags '-extldflags \"-static\"'

Этот флаг указывает компоновщику использовать параметр -static при связывании внешних библиотек. -static указывает компоновщику статически включать все зависимости в двоичный файл, а не полагаться на их присутствие в среде выполнения. Это устраняет необходимость поиска библиотеки времени выполнения и делает двоичный файл независимым от доступности внешней библиотеки.

Комбинируя оба флага, вы гарантируете, что построенный двоичный файл полностью статичен и содержит как среду выполнения Go, так и все необходимые внешние зависимости внутри его исполняемый код. Это гарантирует, что двоичный файл может быть выполнен в любой среде без необходимости использования дополнительных компонентов времени выполнения или динамического связывания.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3