Cara Menentukan Keutamaan Pemuatan Perpustakaan
Apabila menyusun atur cara C menggunakan g dan ld, anda bertujuan untuk memautkan program anda dengan perpustakaan kongsi tertentu (.so libraries) semasa runtime. Walau bagaimanapun, jika terdapat berbilang perpustakaan dengan nama yang sama di lokasi yang berbeza, g dan ld boleh menggunakan perpustakaan yang wujud dalam laluan sistem standard dan bukannya perpustakaan khusus yang anda inginkan. Artikel ini menerangkan cara untuk menentukan laluan perpustakaan pilihan.
Penyelesaian
Untuk menyelesaikan isu ini dan mengutamakan pustaka pilihan anda, pertimbangkan untuk menggunakan salah satu kaedah berikut:
1. LD_LIBRARY_PATH
Ubah suai pembolehubah persekitaran LD_LIBRARY_PATH untuk memasukkan direktori tempat pustaka yang anda inginkan berada. Ini memastikan bahawa pemaut mencari pustaka anda dalam direktori itu terlebih dahulu. Walau bagaimanapun, berhati-hati kerana kaedah ini boleh mempunyai implikasi keselamatan dan prestasi.
2. Pilihan rpath GCC
Gunakan bendera "-Wl,-rpath," bersama-sama laluan direktori untuk menetapkan laluan carian perpustakaan masa jalan. Pilihan ini menentukan direktori yang harus dicari oleh pemaut untuk perpustakaan kongsi semasa melaksanakan program. Secara lalai, pemaut mencari direktori standard.
Contoh:
<code class="Bash">g++ -g -Wall -o my_binary -L/my/dir -lfoo -Wl,-rpath,/my/dir bar.cpp</code>
3. LD_PRELOAD
Tambah laluan penuh perpustakaan yang diingini kepada pembolehubah persekitaran LD_PRELOAD sebelum melancarkan program anda. Kaedah ini memaksa program untuk memuatkan perpustakaan yang ditentukan sebelum yang lain. Walau bagaimanapun, ia tidak disyorkan untuk kegunaan umum kerana potensi risiko keselamatannya.
Awas:
Apabila menggunakan kaedah ini, pastikan perpustakaan yang dinyatakan serasi sepenuhnya dengan keperluan program anda. Pustaka yang tidak serasi boleh menyebabkan ranap sistem atau tingkah laku yang salah.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Keutamaan Pemuatan Perpustakaan dalam Kompilasi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!