GLIBCXX_3.4.20 bulunamadı, bu hatayı nasıl düzeltebilirim?


104

Ubuntu 14.04.1 64-bit LTS'de Program Düzenleyicisi programını ( bu sitede mevcut ) çalıştırmaya çalışıyorum. Terminalde şu çıktıları alıyorum:

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

Ben komut çalıştı stringsüzerinde /usr/lib/x86_64-linux-gnu/libstdc++.so.6burada takip ederek giriş ve çıkış olduğu gibi:

$ 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

Bu sorunu nasıl çözebilirim Bir şekilde bununla ilişkili olduğunu GCCancak sorunun nasıl çözüleceğini çözemediğimi tahmin ediyorum . Ayrıca, Ubuntu'daki en son GCC'yi nasıl kullanırım? Konusunda önerildiği gibi bir PPA denedim. ve GLIBCXX_3.4.15 adresindeki Ubuntu'nun eski bir sürümü için benzer bir soru bulunamadı . Ancak koştuktan sonra sudo updateçok sayıda uyarı alıyorum ve dizgiler komutuyla elde ettiğim liste kurulumdan sonra yeni girdilere sahip değildi gcc 4.9, bu yüzden PPA ( Toolchains Test Builds ) ile temizledim ppa-purge. Herhangi bir yardım, nasıl devam edileceğine dair öneriler büyük beğeni topluyor.


Zaten bir çözüm buldun mu?
Steven Roose,

1
@StevenRoose Bazı destekleri ekledikten ve bazı yazılımları yükledikten sonra sorunu çözebildim, ancak hatırladığımda ayrıntıları net bir şekilde hatırlamıyorum, onları bir cevap olarak göndereceğim.
Vesnog

Bunun sembol bağlantı yapmanın bir etkisi olduğu anlaşılıyor: stackoverflow.com/questions/2856438/… Sadece yeterince yeni bir kütüphane sürümüne bağlanmıyorsunuz.
Ciro Santilli,

Yanıtlar:


102

Başka bir programı çalıştırmaya çalışırken de aynı problemi yaşıyordum ve StackOverflow üzerinde bir çözüm buldum .

Temel olarak, aşağıdaki komutları yapmanız yeterlidir: İlk önce, kurun:

sudo apt-get install libstdc++6

Bu zaten varsayılan olarak yüklü olmalıdır, ancak yine de deneyin. Çözmezse, sadece aşağıdakileri yapın:

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

"Dist-upgrade" komutunu ben yapmadım, ama daha önce olanlar benim için çözdü.


6
sudo apt-get dist-upgrade sorunumu çözdü
ady

2
Sorun gerek kalmadan çözüldü dist-upgradeolarak upgradeönerilen ve en son Sistemimi güncellenenlibstdc++
arainone

2
havuzumuza ek olarak, 'güncelleme' ve 'dağıtma' yükseltme işlemlerinin hepsine ihtiyacım vardı.
virtualxtc

5
güncellemeden sonra GLIBCXX as'ın son sürümünü kontrol edebilirsinizstrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya

1
Ubuntu 16.04: Kasım 2017’de, GLIBCXX_3.4.24’e ek olarak güncellenen ve eklenmeyen 'güvenilmeyen ve desteklenmeyen' ppa: ubuntu-toolchain-r / testi eklendi ve bunun yanı sıra TÜM c / c ++ / fortran güncellemeleri geliştirme araçları makinenizdeapt-repository/usr/lib/x86_64-linux-gnu/libstdc++.so.6
KNB

60

Anaconda 4.0.0 (mjp'nin belirttiği gibi) ile başıma geldi, ama benim için düzeltmem bu komutu ortamımda çalıştırmaktı:

conda install libgcc

6
Bu, diğer iş parçacıklarından birçok çözüm denedikten sonra benim için çözdü.
Shawn Anderson

3
Ubuntu
16.04'te

1
bu gerçekten birkaç kez kıçımı kurtardı!
MBZ

Ubuntu 16.04 - benim için çözdü.
Zhubarb

bu çok daha iyi .. benim için çalıştı .. python 'ROOT' ithal etmeye çalışıyordu
MycrofD

11

Bu sorunu yaşadım - çünkü Anaconda2bu şeyin ne olursa olsun GLIBCXX_3.4.20 versiyonuna sahip değildi. Yalnızca .19'a kadar, sizinkilerle aynı.

Ancak, Ubuntu'nun kütüphanesinde de vardı . Böylece, Anaconda kütüphanesinde bir önceki bağlantıyı değiştiren GLIBCXX_3.4.20'yi içeren asıl Linux kütüphanesine bir softlink / kısayol yarattım.

Adında bir klasör olmalıdır libstdc++.so.6burada Anaconda kütüphanede,: ~/anaconda2/lib. Bu klasörde, eksik olanı hariç olmak üzere, script / library-code-thing sürümleri bulunur: GLIBCXX_3.4.20

Sorunu çözmek için aşağıdaki adımları izleyin:

  1. doğru yere git ve şu anki kısayolunu yedekleanaconda2 (üzerine yazılmadan adını değiştir):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. lnkomutu kullanarak yeni bir kısayol oluşturun (önceki konumda olduğumu farz ediyorum ~ / anaconda2 / lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. spyder'ı / kullandığınız diğer arayüzü yeniden başlatın

Şimdi çalışması gerekiyor!


benim için sadece conda adını değiştirmek için yeterliydi, o yüzden bir bağlantıya ihtiyaç duymadan os versiyonunu buldu
Mingwei Samuel

7

CentOS'ta böyle bir problemi çözdüm (fakat GLIBCXX_3.4.21) ancak os'a bağımlı değil. Kütüphane gcc derleyicisinin bir parçası olduğundan, uygun gcc sürümünü kurmanız veya derlemeniz gerekir. Bu, gcc ve uygun libstdc ++ sürümlerinin tablosudur:

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

(sürümlerin tam listesi burada )

Gcc'nin nasıl yükleneceğine bağlı değildir - paketten kurulabilir veya derlenip kaynaklardan kurulabilir.

Yeni kurulan yerine sistem gcc kütüphanelerinin bulunması mümkündür. Bu nedenle, örneğin aşağıdaki gibi komut satırında kitaplıkları bulacağınız ortam değişkenini belirtmeniz gerekir:

$ LD_LIBRARY_PATH=/usr/local/lib64 command args ...

Bağlantıyı güncelleyerek kalıcı olarak sabit /usr/lib64/libstdc++.so.6ben vardı yeni bir sürüme işaret etmek /usr/local/lib64/libstdc++.so.6bu komutla: ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6. Eski sürüm, geri dönmeniz gerekirse, bağlantıyı gösteren hiçbir bağlantı bırakmaz. Biraz kesmek ama işe yarıyor.
Matthew,

2

Yıllar boyunca birçok farklı paketle bu defalarca yaşadım. Her zaman tarafından çözüldü:

sudo apt-get dist-upgrade

Eğer dağıtıcınız yükseltilebiliyorsa, hemen hemen her zaman yeni bir C ++ kütüphanesini indirecek ve yeniden çalışacakları gibi yeniden yapılandıracaktır. Bu sorun neredeyse her zaman sisteminizin doğru kütüphaneye işaret etmemesinden kaynaklanır. Benim durumumda, genellikle bir kütüphanenin çapraz derleyici versiyonuna işaret etmekten kaynaklanmaktadır.


2

before_install:

# Bu geçici çözüm, SASS desteği ile "genişletilmiş" hugo çalışırken libstdc ++ hatalarını önlemek için gereklidir.

  • 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

Yüklemek:

  • 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

Bu çözümü burada buldum


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/

5
Ubuntu'ya Sormaya Hoş Geldiniz! Bu komutun ne elde etmesi gerektiğiyle ilgili ayrıntılı bilgi vermek için bu cevabı düzenlemenizi öneririm . (Ayrıca bkz İyi bir cevap yazmak nasıl? Cevapların türlü Ask Ubuntu en değerli kabul yaptığınız hakkında genel öneri niteliğinde değildir.)
David Foerster

6
Neden cpve değil ln -s?
AB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.