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.