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
Patricia Arquetteasal
2024-11-25 10:50:11323semak imbas

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}

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
  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}
  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!

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