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.
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