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!