Pernyataan Masalah:
Membina Go asas coretan antara muka dengan pangkalan data Oracle gagal apabila menyusun secara statik menggunakan arahan:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static" ${MAIN_SRC}
Ralat penyusunan menunjukkan bahawa perpustakaan Oracle -lclntsh tidak dapat ditemui. Walaupun percubaan untuk menetapkan pembolehubah persekitaran dan memasang fail tambahan daripada pakej pangkalan data Oracle, kompilasi statik masih gagal.
Penyelesaian:
Jana Pustaka Statik:
Oracle biasanya tidak dihantar dengan perpustakaan statik libclntst.a. Untuk menjananya, jalankan arahan berikut:
$ORACLE_HOME/bin/genclntst
Pautkan Aplikasi:
Pautkan aplikasi anda dengan perpustakaan statik yang dijana:
CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntsh -lclntst" ${MAIN_SRC}
Kendalikan Simbol Hilang (Pilihan):
Jika masih terdapat simbol yang hilang, gunakan alat nm untuk mengenal pastinya. Kemudian, tambahkan perpustakaan statik tambahan seperti yang diperlukan untuk menyelesaikan kebergantungan.
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Memautkan Go CGO Boleh Laku secara Statik dengan Perpustakaan Oracle di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!