"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como criar binários estáticos em Golang com Docker Scratch: CGO_ENABLED=0 e -ldflags?

Como criar binários estáticos em Golang com Docker Scratch: CGO_ENABLED=0 e -ldflags?

Publicado em 2024-11-06
Navegar:973

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

Sinalizadores para criar binários estáticos em Golang

Ao construir um binário estático em Golang usando a base de rascunho do Docker, é essencial incluir ambos CGO_ENABLED =0 e sinalizadores -ldflags '-extldflags "-static"'. Embora ambas as opções possam parecer redundantes, elas desempenham funções distintas na obtenção de binários estáticos.

CGO_ENABLED=0

Este sinalizador desativa o uso de código C no tempo de execução Go. CGO (C Go) permite a interface com código C em programas Go. Ao definir CGO_ENABLED=0, você evita que Go tente se vincular a qualquer biblioteca C, garantindo que o binário construído seja autossuficiente.

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

Este sinalizador instrui o vinculador a usar a opção -static ao vincular bibliotecas externas. -static diz ao vinculador para incluir todas as dependências estaticamente no binário, em vez de depender delas para estarem presentes no ambiente de tempo de execução. Isso elimina a necessidade de pesquisas na biblioteca de tempo de execução e torna o binário independente da disponibilidade da biblioteca externa.

Ao combinar os dois sinalizadores, você garante que o binário criado seja totalmente estático, contendo o tempo de execução Go e quaisquer dependências externas necessárias dentro seu código executável. Isso garante que o binário possa ser executado em qualquer ambiente sem a necessidade de componentes de tempo de execução adicionais ou vinculação dinâmica.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3