Cara Compile Golang Static Binary

Cara Compile Golang Static Binary. Kali ini saya akan sharing mengenai tips compile tool atau utilitas yang dibuat menggunakan Golang agar bisa dipakai di host berbeda tanpa harus memikirkan berbedaan versi libc.

Dalam artikel sebelumnya, saya ingin membahas pengalaman saya menggunakan Kali Linux sebagai sistem operasi utama untuk keperluan sehari-hari. Salah satu tantangan yang saya hadapi adalah saat mengompilasi tool atau exploit tanpa menggunakan flag static, yang dapat menyebabkan kegagalan saat dijalankan di server Linux lain akibat perbedaan versi GLIBC.

Kali Linux merupakan sistem operasi berbasis rolling release, sehingga versi GLIBC yang digunakan biasanya lebih baru dibandingkan distribusi Linux lainnya. Sebagai contoh, ketika saya mencoba mengompilasi alat VeilTransfer menggunakan perintah go build di Kali Linux, saya mendapati bahwa tool tersebut mengalami error saat dijalankan di Ubuntu 18.04.

Untuk menghindari masalah ini, penting untuk mempertimbangkan penggunaan flag static saat melakukan kompilasi. Ini akan memastikan bahwa alat yang dihasilkan lebih kompatibel dengan berbagai distribusi Linux, sehingga dapat mengurangi kemungkinan error yang disebabkan oleh perbedaan versi GLIBC.

Berikut contoh pesan error yang muncul ketika menjalankan tool yang dicompile menggunakan Kali Linux terbaru di Ubuntu 18.04.

./VeilTransfer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./VeilTransfer)

./VeilTransfer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./VeilTransfer)


Nah, cara mengatasinya adalah dengan melakukan compile menggunakan command:

CGO_ENABLED=0 go build -ldflags '-extldflags "-static"' -o namafile

Dan ketika tool tersebut dijalankan di OS dengan versi libarary yang lebih rendah:

Problem solved.

Oke mungkin sekian sharing kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.

Posting Komentar untuk "Cara Compile Golang Static Binary"