Bagaimana saya bisa mendapatkan GLIBCXX_3.4.15 di Ubuntu? Saya tidak dapat menjalankan beberapa program yang sedang saya kompilasi.
Ketika saya melakukan:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
Saya mendapat:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
Terima kasih atas bantuannya!
apt-get
solusi berbasis untuk masalah ini dijelaskan di sini: superuser.com/questions/310809/...Saya telah menghindari masalah ini di masa lalu hanya dengan menautkan libstdc ++ secara statis dengan parameter ini yang dikirim ke g ++ saat menautkan file yang dapat dieksekusi:
-static-libstdc++
Jika menautkan di perpustakaan secara statis adalah opsi, ini mungkin solusi tercepat.
sumber
Saya mencoba untuk mendapatkan dentang untuk bekerja (yang juga membutuhkan 6.0.15), dan ketika melihat-lihat saya menemukan itu telah dipasang di
/usr/local/lib/libstdc++.so.6.0.15
. Itu dipasang di sana ketika saya menginstal grafit (versi gcc eksperimental).Jika Anda memerlukan akses ke perpustakaan di lokasi itu, maka Anda harus mendefinisikan
LD_LIBRARY_PATH
sebagai:export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
Saya bisa mendapatkan dentang untuk bekerja setelah melakukan ini. Semoga bermanfaat bagi seseorang.
sumber
LD_LIBRARY_PATH
akan memengaruhi mereka. mereka semua akan menautkan ke perpustakaan baru, Pada akhirnya sebagian besar binari tidak berfungsi: sepertils
grep
, ....: Saya mendapatkan:ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Saya mengalami masalah ini ketika mencoba menggunakan matlab eng untuk memanggil fungsi m dari kode c. yang terjadi dengan perintah
mex -f .. ..
Solusi saya:
strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC
Saya menemukan itu mencakup 3.4.15
jadi sistem saya memiliki libs terbaru.
masalahnya berasal dari matlab itu sendiri, ia memanggil libstdc ++. so.6-nya sendiri dari
{MATLAB}/bin
jadi, ganti saja dengan lib sistem yang diperbarui.
sumber
{MATLAB}/bin
ke dalam file/usr/lib/
, dan kemudian memulai ulang matlab. Ini berfungsi di Matlab 2010b pada Fedora 14 x64.Saya mendapat kesalahan yang sama. Beginilah cara kerjanya untuk saya:
Bekerja dengan sempurna!
sumber
Untuk kesalahan ini, saya menyalin libstdc ++. So.6.0.17 terbaru dari server lain, dan menghapus tautan lunak dan membuatnya kembali.
1. Salin libstdc ++. So.6.0.15 atau yang terbaru dari server lain ke sistem yang terpengaruh.
Dalam kasus saya SUSE linux 11 SP3 memiliki versi terbaru.
2. rm libstdc ++. So.6
3. ln -s libstdc ++. So.6.0.17 libstdc ++. So.6 (di bawah direktori / usr / lib64).
nJoy
sumber
Saya baru saja menghadapi masalah serupa dalam membangun versi LLVM 3.7. pertama periksa apakah Anda telah menginstal perpustakaan yang diperlukan di sistem Anda:
$locate libstdc++.so.6.*
Kemudian tambahkan lokasi yang ditemukan ke variabel lingkungan $ LD_LIBRARY_PATH Anda.
sumber
Terkadang Anda tidak mengontrol mesin target (misalnya pustaka Anda perlu dijalankan pada sistem perusahaan yang dikunci). Jika demikian, Anda perlu mengompilasi ulang kode Anda menggunakan versi GCC yang sesuai dengan versi GLIBCXX mereka. Jika demikian, Anda dapat melakukan hal berikut:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
... Katakanlah versinya adalah3.4.19
.[4.8.3, 4.9.0)
.sumber
gcc versi 4.8.1, kesalahannya tampak seperti:
Saya menemukan libstdc ++. So.6.0.18 di tempat saya memenuhi gcc 4.8.1
Lalu saya melakukan seperti ini
cp ~/objdir/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64/ rm /usr/lib64/libstdc++.so.6 ln -s libstdc++.so.6.0.18 libstdc++.so.6
masalah terpecahkan.
sumber
Saya telah mengekstraknya dari RPM ( RPM untuk libstdc ++ ) dan kemudian:
export LD_LIBRARY_PATH=.
Untuk mengatur sistem untuk mencari perpustakaan di direktori saat ini. Kemudian jalankan saja program saya. Tapi dalam kasus saya, saya telah menerima satu executable yang saya butuhkan, itu bukan perubahan sistem yang luas.
sumber
Saya mengalami masalah serupa, dan saya telah mengatasinya dengan menautkan secara statis
libstdc++
ke program yang saya kompilasi, seperti:bukannya biasanya
Mungkin ada masalah dengan solusi ini terkait dengan memuat pustaka bersama saat runtime, tetapi saya belum melihat masalah ini cukup dalam untuk berkomentar.
sumber
Bug dengan GLIBCXX_3.4.14 Anda perlu menginstal GCC versi terbaru. http://pkgs.org/download/libstdc++.so.6 goto:
http://geeksterminal.com/how-to-install-glib-glibc/1392/
dan ikuti instruksi.
sumber
Saya mengalami masalah yang sama karena saya mengubah pengguna dari diri saya sendiri menjadi orang lain:
su
Untuk beberapa alasan, setelah melakukan kompilasi normal saya tidak dapat menjalankannya (pesan kesalahan yang sama). Langsung ssh ke akun pengguna lain bekerja.
sumber
Saya memiliki beberapa versi kompiler gcc yang diinstal dan perlu menggunakan versi yang lebih baru daripada penginstalan default. Karena saya bukan administrator sistem untuk sistem Linux kami, saya tidak bisa begitu saja mengubah / usr / lib atau banyak saran lain di atas. Saya mengalami masalah ini dan akhirnya melacaknya untuk mengatur jalur saya ke direktori perpustakaan 32-bit alih-alih direktori perpustakaan 64-bit (lib64). Karena pustaka di direktori 32-bit tidak kompatibel, sistem secara default menggunakan versi lama yang kedaluwarsa.
Menggunakan -L ke jalur yang saya referensikan memberi peringatan tentang "melewatkan libstdc ++ yang tidak kompatibel. Jadi ketika mencari -lstdc ++". Ini adalah petunjuk yang akhirnya membantu saya menyelesaikan masalah.
sumber
Hal yang sama dengan versi gcc
4.8.1 (GCC)
danlibstdc++.so.6.0.18
. Harus menyalinnya di sini/usr/lib/x86_64-linux-gnu
di kotak ubuntu saya.sumber
Dalam kasus saya LD_LIBRARY_PATH memiliki / usr / lib64 dulu sebelum / usr / local / lib64. (Saya sedang membangun llvm 3.9).
Kompiler gcc baru yang saya instal untuk mengkompilasi llvm 3.9 memiliki pustaka yang menggunakan pustaka GLIBCXX yang lebih baru di bawah / usr / local / lib64 Jadi saya memperbaiki LD_LIBRARY_PATH agar linker dapat melihat / usr / local / lib64 terlebih dahulu.
Itu memecahkan masalah ini.
sumber
Saya baru saja menggunakan -static-libstdc ++ saat membangun. w / itu, saya bisa menjalankan a.out
g++ test.cpp -static-libstdc++
sumber
Untuk tujuan pengujian:
Di mesin asli, temukan pustaka, salin ke direktori yang sama dengan yang dapat dieksekusi:
$ ldconfig -p | grep libstdc libstdc++.so.6 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 (libc6) => /usr/lib32/libstdc++.so.6 $ cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 .
Kemudian salin pustaka yang sama ini ke mesin target, dan jalankan yang dapat dieksekusi:
LD_LIBRARY_PATH=. ./myexecutable
Catatan: perintah di atas bersifat sementara; ini bukan perubahan seluruh sistem.
sumber
Saya memiliki masalah yang sama sebelumnya, dan memperbaikinya, langkah-langkahnya dapat ditemukan pada Memperbaiki kesalahan "GLIBCXX_3.4.15" ini di matlab
sumber