GLIBCXX_3.4.20 tidak ditemukan, bagaimana cara memperbaiki kesalahan ini?

104

Mengapa saya mencoba menjalankan Layout Editor program (tersedia di situs ini ) di Ubuntu 14.04.1 LTS 64-bit Saya mendapatkan output berikut di terminal:

$ layout
layout: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by layout)

Aku mencoba perintah stringspada /usr/lib/x86_64-linux-gnu/libstdc++.so.6sebagai berikut dan di sini adalah input dan output:

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
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
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

Bagaimana saya bisa mengatasi masalah ini, entah bagaimana saya kira itu berkaitan dengan GCCtetapi tidak tahu bagaimana cara memperbaiki masalah ini. Selain itu, saya telah mencoba PPA seperti yang disarankan pada Bagaimana cara menggunakan GCC terbaru di Ubuntu? dan ada pertanyaan serupa untuk versi Ubuntu yang lebih lama di GLIBCXX_3.4.15 tidak ditemukan . Namun, setelah saya berlari sudo updatesaya mendapatkan banyak peringatan dan daftar yang saya peroleh dengan perintah string tidak memiliki entri baru setelah menginstal gcc 4.9, jadi saya membersihkan PPA ( Toolchains Test Builds ) dengan ppa-purge. Setiap bantuan, saran tentang cara melanjutkan sangat dihargai.

Vesnog
sumber
Sudah menemukan solusi?
Steven Roose
1
@StevenRoose Saya dapat menyelesaikan masalah, setelah menambahkan beberapa backport dan menginstal beberapa perangkat lunak tetapi saya tidak mengingat detailnya dengan jelas ketika saya mengingatnya, saya akan mempostingnya sebagai jawaban.
Vesnog
Tampaknya ini adalah efek dari penautan simbol: stackoverflow.com/questions/2856438/… Anda hanya tidak menautkan ke versi pustaka yang cukup baru.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

102

Saya mengalami masalah yang sama ketika mencoba menjalankan program lain, dan menemukan solusi di StackOverflow .

Pada dasarnya, lakukan saja perintah berikut: Pertama, instal:

sudo apt-get install libstdc++6

Ini seharusnya sudah diinstal secara default, tetapi tetap coba. Jika tidak menyelesaikannya, lakukan saja hal berikut:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Saya tidak melakukan perintah "dist-upgrade", tetapi yang sebelumnya menyelesaikannya untuk saya

Paulo
sumber
6
sudo apt-get dist-upgrade menyelesaikan masalah saya
ady
2
masalah diselesaikan tanpa perlu dist-upgradeseperti yang upgradediusulkan dan memperbarui sistem saya dengan yang terbarulibstdc++
arainone
2
Selain repositori, 'pembaruan' dan 'peningkatan-dist' semuanya diperlukan di pihak saya.
virtualxtc
5
setelah pembaruan, Anda dapat memeriksa versi terbaru GLIBCXX sebagaistrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya
1
Ubuntu 16.04: Pada November 2017, menambahkan ppa 'tidak tepercaya, dan tidak didukung' : ubuntu-toolchain-r / test melalui add- apt-repositoryupdated /usr/lib/x86_64-linux-gnu/libstdc++.so.6hingga dan termasuk GLIBCXX_3.4.24 - dan selain itu, ini memperbarui dasar semua SEMUA c / c ++ / fortran alat pengembangan pada mesin Anda
knb
60

Itu terjadi pada saya dengan anaconda 4.0.0 (seperti @mjp menyatakan), tetapi perbaikan bagi saya adalah dengan menjalankan perintah ini di lingkungan saya:

conda install libgcc
neok
sumber
6
Ini menyelesaikannya untuk saya setelah mencoba banyak solusi dari utas lainnya.
Shawn Anderson
3
Berfungsi di Ubuntu 16.04 juga
fviktor
1
ini benar-benar menyelamatkan pantat saya beberapa kali!
MBZ
Ubuntu 16.04 - menyelesaikannya untuk saya.
Zhubarb
ini jauh lebih baik .. bekerja untuk saya .. berusaha untuk 'mengimpor ROOT' dengan python
MycrofD
11

Saya punya masalah ini - itu karena Anaconda2tidak memiliki versi GLIBCXX_3.4.20 apa pun itu. Hanya hingga 0,19, sama seperti milik Anda.

Namun, perpustakaan Ubuntu memang memilikinya . Jadi saya baru saja membuat softlink / pintas di perpustakaan Anaconda ke perpustakaan Linux yang sebenarnya yang mengandung GLIBCXX_3.4.20, menggantikan yang sebelumnya, dan itu bekerja dengan baik setelah me-restart python GUI (Spyder).

Harus ada sebuah folder bernama libstdc++.so.6di perpustakaan Anaconda, yang ada di sini: ~/anaconda2/lib. Di dalam folder ini ada versi script / library-code-thing, tidak termasuk yang Anda lewatkan: GLIBCXX_3.4.20

Ikuti langkah-langkah ini untuk menyelesaikan masalah:

  1. pergi ke lokasi yang tepat dan cadangkananaconda2 pintasan Anda saat ini (ubah namanya agar tidak ditimpa):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. buat pintasan baru menggunakan lnperintah (saya berasumsi bahwa saya di lokasi sebelumnya ~ / anaconda2 / lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. restart spyder / antarmuka lain yang Anda gunakan

Seharusnya sekarang berfungsi!

mjp
sumber
bagi saya itu sudah cukup dengan hanya mengganti nama conda. jadi, kemudian menemukan versi os tanpa memerlukan tautan
Mingwei Samuel
7

Saya memecahkan masalah seperti ini (tapi GLIBCXX_3.4.21) pada CentOS tetapi tidak tergantung dari os. Perpustakaan adalah bagian dari kompiler gcc sehingga perlu menginstal atau menyusun versi gcc yang sesuai. Ini adalah tabel versi gcc dan versi libstdc ++ yang sesuai:

GCC 4.9.0: libstdc++.so.6.0.20
GCC 5.1.0: libstdc++.so.6.0.21
GCC 6.1.0: libstdc++.so.6.0.22
GCC 7.1.0: libstdc++.so.6.0.23
GCC 7.2.0: libstdc++.so.6.0.24
GCC 8.0.0: libstdc++.so.6.0.25

(daftar lengkap versi ada di sini )

Itu tidak tergantung dari cara menginstal gcc - itu dapat diinstal dari paket atau dikompilasi dan diinstal dari sumber.

Mungkin saja pustaka gcc sistem tersedia alih-alih yang baru diinstal. Jadi perlu menentukan variabel lingkungan tempat menemukan perpustakaan misalnya dalam baris perintah seperti ini:

$ LD_LIBRARY_PATH=/usr/local/lib64 command args ...
oklas
sumber
Aku tetap ini secara permanen dengan memperbarui link /usr/lib64/libstdc++.so.6untuk menunjuk ke versi yang lebih baru aku di /usr/local/lib64/libstdc++.so.6dengan perintah ini: ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6. Versi lama tetap tanpa tautan yang menunjuk ke sana jika Anda perlu kembali. Sedikit peretasan tetapi berhasil.
Matius
2

Saya sudah berkali-kali selama bertahun-tahun dengan banyak paket berbeda. Itu selalu diselesaikan oleh:

sudo apt-get dist-upgrade

Jika dist Anda dapat diupgrade, hampir selalu akan menurunkan pustaka C ++ baru dan mengonfigurasi ulang hal-hal seperti itu agar berfungsi kembali. Masalah ini hampir selalu disebabkan oleh sistem Anda yang tidak menunjuk ke perpustakaan yang tepat. Dalam kasus saya, biasanya disebabkan oleh menunjuk ke versi cross-compiler perpustakaan.

Bryan Wilcutt
sumber
2

before_install:

# Pemecahan masalah ini diperlukan untuk menghindari kesalahan libstdc ++ saat menjalankan hugo "extended" dengan dukungan SASS.

  • wget -q -O libstdc++6 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
  • sudo dpkg --force-all -i libstdc++6

Pasang:

  • wget -q -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.46/hugo_extended_0.46_Linux_64bit.deb
  • sudo dpkg -i hugo.deb

Saya menemukan solusi ini di sini

Jackson Junior Mkhabela
sumber
1
sudo cp /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6 /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6.0.20 /usr/lib/x86_64_linux-gnu/
Mati
sumber
5
Selamat Datang di Tanya Ubuntu! Saya merekomendasikan untuk mengedit jawaban ini untuk meluaskannya dengan perincian spesifik tentang apa yang seharusnya dicapai oleh perintah ini. (Lihat juga Bagaimana cara saya menulis jawaban yang bagus? Untuk saran umum tentang jenis jawaban apa yang dianggap paling berharga di Ask Ubuntu.)
David Foerster
6
Kenapa cpdan tidak ln -s?
AB