Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencipta Perduaan Statik di Golang dengan Docker Scratch: CGO_ENABLED=0 dan -ldflags?

Bagaimana untuk Mencipta Perduaan Statik di Golang dengan Docker Scratch: CGO_ENABLED=0 dan -ldflags?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 04:59:28718semak imbas

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

Bendera untuk Mencipta Perduaan Statik di Golang

Apabila membina binari statik di Golang menggunakan pangkalan gores Docker, adalah penting untuk memasukkan kedua-dua CGO_ENABLED =0 dan -ldflags '-extldflags "-static"' bendera. Walaupun kedua-dua pilihan mungkin kelihatan berlebihan, ia memainkan peranan yang berbeza dalam mencapai perduaan statik.

CGO_ENABLED=0

Bendera ini melumpuhkan penggunaan kod C dalam masa jalan Go. CGO (C Go) membenarkan antara muka dengan kod C dalam program Go. Dengan menetapkan CGO_ENABLED=0, anda menghalang Go daripada cuba memaut dengan mana-mana pustaka C, memastikan binari yang dibina adalah mencukupi.

-ldflags '-extldflags "-static"'

Bendera ini mengarahkan pemaut untuk menggunakan pilihan -statik apabila memautkan perpustakaan luaran. -static memberitahu pemaut untuk memasukkan semua kebergantungan secara statik dalam binari, dan bukannya bergantung pada mereka untuk hadir dalam persekitaran masa jalan. Ini menghapuskan keperluan untuk carian perpustakaan masa jalan dan menjadikan binari bebas daripada ketersediaan pustaka luaran.

Dengan menggabungkan kedua-dua bendera, anda memastikan binari yang dibina adalah statik sepenuhnya, mengandungi kedua-dua masa jalan Go dan sebarang kebergantungan luaran yang diperlukan dalam kod boleh lakunya. Ini memastikan binari boleh dilaksanakan dalam mana-mana persekitaran tanpa memerlukan komponen masa jalan tambahan atau pemautan dinamik.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Perduaan Statik di Golang dengan Docker Scratch: CGO_ENABLED=0 dan -ldflags?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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