Mengapakah kedua-dua `CGO_ENABLED=0` dan `-ldflags \'-extldflags \'-static\'\'` diperlukan untuk mencipta perduaan Go statik?

Patricia Arquette
Lepaskan: 2024-10-28 19:53:29
asal
163 orang telah melayarinya

Why are both `CGO_ENABLED=0` and `-ldflags '-extldflags

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:

  • CGO_ENABLED=0 menghalang sebarang pergantungan pada perpustakaan C luaran .
  • -ldflags '-extldflags "-static"' secara khusus memautkan semua perpustakaan berkaitan Go (seperti masa jalan, matematik, dll.) secara statik.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!