Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Memautkan Go CGO Boleh Laku secara Statik dengan Perpustakaan Oracle di Linux?

Bagaimana untuk Memautkan Go CGO Boleh Laku secara Statik dengan Perpustakaan Oracle di Linux?

Patricia Arquette
Lepaskan: 2024-11-25 10:50:11
asal
296 orang telah melayarinya

How to Statically Link a Go CGO Executable with Oracle Libraries on Linux?

Memautkan untuk Pelaksanaan Statik Go CGO Boleh Laku dengan Oracle Libraries di Linux

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}
Salin selepas log masuk

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:

  1. Jana Pustaka Statik:

    Oracle biasanya tidak dihantar dengan perpustakaan statik libclntst.a. Untuk menjananya, jalankan arahan berikut:

    $ORACLE_HOME/bin/genclntst
    Salin selepas log masuk
  2. 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}
    Salin selepas log masuk
  3. 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:

  • Menggunakan utiliti pemaut daripada Oracle mungkin berguna untuk menganalisis kebergantungan.
  • Bergantung pada versi Oracle dan pengkompil, mungkin perlu untuk pautan dengan perpustakaan statik masa jalan ICC tambahan.
  • Pemautan statik memerlukan penyelesaian secara manual semua kebergantungan, yang boleh menjadi rumit.

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!

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