Tambahkan jalur perpustakaan ke LD_LIBRARY_PATH
variabel lingkungan
TL;DR
GCC mengharuskan Anda memberi tahu di mana perpustakaan Anda berada secara manual ketika tidak dapat menemukan versi yang tepat, yang dapat dilakukan dengan beberapa cara. Salah satunya adalah menambahkannya ke LD_LIBRARY_PATH
.
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
Untuk beberapa, jalur pustaka adalah /usr/local/lib64/
. Yang lain telah melaporkan jalur perpustakaan /usr/lib/x86_64-linux-gnu/
bekerja untuk mereka sebagai gantinya.
Mengapa kita perlu menambahkan perpustakaan ke LD_LIBRARY_PATH
?
Saat Anda mengompilasi dan menginstal GCC, ia menempatkan pustaka di salah satu direktori ini, tetapi hanya itu yang dilakukannya. Menurut FAQ untuk libstdc++
, kesalahan yang kami dapatkan berarti tautan dinamis menemukan versi libstdc++
yang salah perpustakaan bersama. Karena penaut tidak dapat menemukan versi yang tepat, kami harus memberi tahu di mana menemukan libstdc++
perpustakaan.
Cara termudah untuk memperbaikinya adalah dengan menggunakan variabel lingkungan LD_LIBRARY_PATH, yang merupakan daftar direktori yang dipisahkan titik dua tempat linker akan mencari pustaka bersama.
Ada cara lain juga untuk memperbaiki masalah ini. Anda dapat menemukan ini dan solusi lain yang disebutkan secara singkat saat Anda menginstal gcc
jika Anda membaca keluaran make:
Perpustakaan telah dipasang di:
/usr/local/lib/../lib32
Jika Anda ingin menautkan ke pustaka yang terpasang di direktori tertentu, LIBDIR, Anda harus menggunakan libtool, dan menentukan nama path lengkap pustaka, atau gunakan bendera `-LLIBDIR' selama menautkan dan melakukan setidaknya salah satu dari berikut:
- tambahkan LIBDIR ke variabel lingkungan `LD_LIBRARY_PATH' selama eksekusi
- tambahkan LIBDIR ke variabel lingkungan `LD_RUN_PATH' selama penautan
- gunakan flag linker `-Wl,-rpath -Wl,LIBDIR'
- mintalah administrator sistem Anda untuk menambahkan LIBDIR ke `/etc/ld.so.conf'
Lihat dokumentasi sistem operasi apa pun tentang pustaka bersama untuk informasi lebih lanjut, seperti halaman manual ld(1) dan ld.so(8).
Grr, itu sederhana! Juga, "jika Anda ingin menautkan ke perpustakaan yang diinstal," serius?
Saya memiliki masalah yang sama pada Ubuntu 14.04 saya ketika mencoba menginstal TopTracker. Saya mendapat kesalahan seperti itu:
/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versi 'CXXABI_1.3.8' tidak ditemukan (diperlukan oleh /usr/share/toptracker/bin/TopTracker)/ usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versi 'GLIBCXX_3.4.21' tidak ditemukan (diperlukan oleh/usr/share/toptracker/bin/TopTracker)/usr /share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versi 'CXXABI_1.3.9' tidak ditemukan (diperlukan oleh /usr/share/toptracker/bin/TopTracker)
Tapi saya kemudian menginstal versi gcc 4.9 dan masalah hilang:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
-
Mengapa Utilitas Webp Dibangun Di Ubuntu 14.04 Tidak Berfungsi Dan Menampilkan Kesalahan Perpustakaan?
-
Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR
-
gcc - /usr/bin/ld error:tidak dapat menemukan <library> di /usr/local/lib meskipun ldconfig mencantumkannya, dan path ditambahkan ke ld.so.conf