"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo crear binarios estáticos en Golang con Docker Scratch: CGO_ENABLED=0 y -ldflags?

¿Cómo crear binarios estáticos en Golang con Docker Scratch: CGO_ENABLED=0 y -ldflags?

Publicado el 2024-11-06
Navegar:708

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

Marcas para crear binarios estáticos en Golang

Al crear un binario estático en Golang usando la base temporal de Docker, es esencial incluir ambos CGO_ENABLED =0 y banderas -ldflags '-extldflags "-static"'. Si bien ambas opciones pueden parecer redundantes, desempeñan funciones distintas a la hora de lograr archivos binarios estáticos.

CGO_ENABLED=0

Esta marca deshabilita el uso de código C en el tiempo de ejecución de Go. CGO (C Go) permite interactuar con código C dentro de los programas Go. Al configurar CGO_ENABLED=0, evita que Go intente vincularse con cualquier biblioteca C, lo que garantiza que el binario creado sea autosuficiente.

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

Este indicador indica al vinculador que utilice la opción -static al vincular bibliotecas externas. -static le dice al vinculador que incluya todas las dependencias estáticamente dentro del binario, en lugar de depender de que estén presentes en el entorno de ejecución. Esto elimina la necesidad de realizar búsquedas en la biblioteca en tiempo de ejecución y hace que el binario sea independiente de la disponibilidad de la biblioteca externa.

Al combinar ambos indicadores, se asegura de que el binario creado sea completamente estático y contenga tanto el tiempo de ejecución de Go como cualquier dependencia externa necesaria dentro. su código ejecutable. Esto garantiza que el binario se pueda ejecutar en cualquier entorno sin requerir componentes de tiempo de ejecución adicionales ni enlaces dinámicos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3