Rumah >pembangunan bahagian belakang >Golang >Mengapakah kedua-dua `CGO_ENABLED=0` dan `-ldflags \'-extldflags \'-static\'\'` diperlukan untuk mencipta perduaan Go statik?
Cara Mencipta Perduaan Statik dalam Go
Apabila membina imej Docker berdasarkan calar, pengguna mungkin menghadapi ralat semasa melaksanakan binari kerana tiada perpustakaan. Ini boleh diselesaikan dengan menetapkan kedua-dua CGO_ENABLED=0 dan -ldflags '-extldflags "-static"' bendera semasa penyusunan.
Mengapa Kedua-dua Bendera Diperlukan?
CGO_ENABLED =0 melumpuhkan penggunaan kod C dalam Go, memastikan binari tidak bergantung pada perpustakaan C luaran.
-ldflags '-extldflags "-static"' mengarahkan pemaut untuk membina binari terpaut secara statik, menghapuskan keperluan untuk perpustakaan kongsi pada persekitaran sasaran.
Walaupun kedua-dua pilihan menyumbang secara individu untuk mencipta perduaan statik, ia mempunyai tujuan yang berbeza:
Tanpa -ldflags '- extldflags "-static"', walaupun CGO dilumpuhkan, binari Go masih akan bergantung pada perpustakaan Go kongsi, menyebabkan ralat "tiada fail atau direktori sedemikian" dalam imej Docker berasaskan calar. Oleh itu, menggunakan kedua-dua bendera adalah penting untuk mencipta binari statik yang benar-benar bebas daripada perpustakaan persekitaran sasaran.
Atas ialah kandungan terperinci Mengapakah kedua-dua `CGO_ENABLED=0` dan `-ldflags \'-extldflags \'-static\'\'` diperlukan untuk mencipta perduaan Go statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!