GLIBCXX_3.4.20 ไม่พบวิธีการแก้ไขข้อผิดพลาดนี้?


104

ตอนนี้ฉันพยายามเรียกใช้ตัวแก้ไขเค้าโครงโปรแกรม(มีอยู่ในเว็บไซต์นี้ ) บน Ubuntu 14.04.1 LTS 64- บิตฉันได้รับผลลัพธ์ต่อไปนี้ในเทอร์มินัล:

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

ฉันพยายามคำสั่งstringsเกี่ยวกับการ/usr/lib/x86_64-linux-gnu/libstdc++.so.6ดังต่อไปนี้และที่นี่เป็นอินพุทและเอาท์พุท:

$ 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

ฉันจะแก้ไขปัญหานี้ได้อย่างไรฉันเดาว่ามันเกี่ยวข้องกับGCCแต่ไม่สามารถหาวิธีแก้ไขปัญหาได้ นอกจากนี้ฉันได้ลอง PPA ตามที่แนะนำบนฉันจะใช้ GCC ล่าสุดบน Ubuntu ได้อย่างไร และมีคำถามคล้ายกันสำหรับรุ่นเก่าของอูบุนตูที่GLIBCXX_3.4.15 ไม่พบ อย่างไรก็ตามหลังจากที่ฉันวิ่งsudo updateฉันได้รับการเตือนจำนวนมากและรายการที่ผมได้มีคำสั่งสตริงไม่ได้มีรายการใหม่หลังจากติดตั้งgcc 4.9ดังนั้นฉันล้าง PPA ( toolchains ทดสอบสร้าง ) ppa-purgeด้วย ความช่วยเหลือคำแนะนำเกี่ยวกับวิธีการดำเนินการใด ๆ ที่ชื่นชมอย่างมาก


พบวิธีแก้ปัญหาแล้ว?
Steven Roose

1
@StevenRoose ฉันสามารถแก้ปัญหาได้หลังจากเพิ่ม backport และติดตั้งซอฟต์แวร์บางตัว แต่ฉันจำรายละเอียดไม่ได้อย่างชัดเจนเมื่อฉันจำได้ฉันจะโพสต์เป็นคำตอบ
Vesnog

ดูเหมือนว่านี่เป็นผลของการเชื่อมโยงสัญลักษณ์: stackoverflow.com/questions/2856438/ ......คุณไม่ได้ลิงก์ไปยังไลบรารี่รุ่นล่าสุด
Ciro Santilli 14 พ.ค. '改造中心法轮功六四

สำเนาซ้ำที่เป็นไปได้ของ/usr/lib/i386-linux-gnu/libstdc++.so.6: รุ่น `GLIBCXX_3.4.19 'ไม่พบ
user9869932

คำตอบ:


102

ผมมีปัญหาเดียวกันเมื่อพยายามที่จะเรียกใช้โปรแกรมอื่น ๆ และพบวิธีแก้ปัญหาในStackOverflow

โดยพื้นฐานแล้วเพียงทำคำสั่งต่อไปนี้: ประการแรกติดตั้ง:

sudo apt-get install libstdc++6

ค่านี้ควรได้รับการติดตั้งโดยค่าเริ่มต้น แต่ลองใช้งานต่อไป หากไม่สามารถแก้ปัญหาได้ให้ทำดังนี้

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

ฉันไม่ได้ใช้คำสั่ง "dist-upgrade" แต่คำสั่งก่อนหน้าจะแก้ไขให้ฉัน


6
sudo apt-get dist-upgrade แก้ปัญหาของฉันได้แล้ว
ady

2
แก้ไขปัญหาโดยไม่จำเป็นต้องdist-upgradeเป็นupgradeเสนอและการปรับปรุงระบบของฉันกับล่าสุดlibstdc++
arainone

2
การเพิ่มพื้นที่เก็บข้อมูล 'อัปเดต' และ 'การอัปเกรดอัพเกรด' เป็นสิ่งจำเป็นสำหรับฉัน
virtualxtc

5
หลังจากอัปเดตคุณสามารถตรวจสอบ GLIBCXX เวอร์ชันล่าสุดได้เช่นstrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya

1
Ubuntu 16.04: ในเดือน พ.ย. 2017 เพิ่มppa: ubuntu-toolchain-r / test ที่ไม่น่าเชื่อถือและไม่สนับสนุนผ่านการทดสอบผ่าน add- apt-repositoryอัปเดต/usr/lib/x86_64-linux-gnu/libstdc++.so.6จนถึงและรวมถึง GLIBCXX_3.4.24 - และนอกเหนือจากนี้การอัปเดตพื้นฐานนี้ทั้งหมด c / c ++ / fortran เครื่องมือพัฒนาบนเครื่องของคุณ
knb

60

มันเกิดขึ้นกับฉันด้วย anaconda 4.0.0 (ตามที่ @mjp ระบุไว้) แต่การแก้ไขสำหรับฉันคือการเรียกใช้คำสั่งนี้ในสภาพแวดล้อมของฉัน:

conda install libgcc

6
วิธีนี้แก้ไขได้สำหรับฉันหลังจากลองวิธีแก้ปัญหามากมายจากเธรดอื่น
Shawn Anderson

3
ใช้ได้กับ Ubuntu 16.04 เช่นกัน
fviktor

1
นี่ช่วยก้นฉันได้สองสามครั้งจริงๆ!
MBZ

Ubuntu 16.04 - แก้ไขให้ฉัน
Zhubarb

นี้ดีกว่ามาก .. ใช้งานได้สำหรับฉัน .. พยายาม 'นำเข้ารูท' ใน python
MycrofD

11

ฉันมีปัญหานี้ - เป็นเพราะAnaconda2ไม่มีรุ่น GLIBCXX_3.4.20 ของสิ่งที่เป็น มากถึง. 19 เช่นเดียวกับคุณ

อย่างไรก็ตามห้องสมุดของอูบุนตูก็มีอยู่ ดังนั้นฉันเพิ่งสร้าง softlink / ช็อตคัตในไลบรารี Anaconda ไปยังไลบรารี Linux จริงที่มี GLIBCXX_3.4.20, แทนที่อันก่อนหน้านี้และทำงานได้ดีหลังจากรีสตาร์ท python GUI (Spyder)

ควรมีโฟลเดอร์ชื่อหนึ่งlibstdc++.so.6ในไลบรารี Anaconda ซึ่งอยู่ที่นี่: ~/anaconda2/lib. ภายในโฟลเดอร์นี้คือเวอร์ชันของสคริปต์ / library-code-Things ยกเว้นเวอร์ชันที่คุณหายไป: GLIBCXX_3.4.20

ทำตามขั้นตอนเหล่านี้เพื่อแก้ไขปัญหา:

  1. ไปที่ตำแหน่งที่ถูกต้องและสำรองanaconda2ทางลัดปัจจุบันของคุณ(เปลี่ยนชื่อเพื่อไม่ให้ถูกเขียนทับ):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. สร้างทางลัดใหม่โดยใช้lnคำสั่ง (ฉันสมมติว่าฉันอยู่ในตำแหน่งก่อนหน้า ~ / anaconda2 / lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. รีสตาร์ท Spyder / อินเตอร์เฟซอื่น ๆ ที่คุณใช้

ตอนนี้มันควรใช้งานได้แล้ว!


สำหรับฉันมันก็เพียงพอแล้วที่จะเปลี่ยนชื่อ conda .so จากนั้นก็พบว่าเวอร์ชั่นของระบบปฏิบัติการโดยไม่จำเป็นต้องมีลิงก์
Mingwei Samuel

7

ฉันแก้ไขปัญหาเช่นนี้ (แต่ GLIBCXX_3.4.21) บน CentOS แต่ไม่ได้ขึ้นอยู่กับระบบปฏิบัติการ ไลบรารีเป็นส่วนหนึ่งของคอมไพเลอร์ gcc ดังนั้นจำเป็นต้องติดตั้งหรือรวบรวม gcc เวอร์ชันที่เหมาะสม นี่เป็นตารางรุ่น gcc และรุ่นที่เหมาะสมของ libstdc ++:

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

(รายการเวอร์ชันทั้งหมดอยู่ที่นี่ )

มันไม่ได้ขึ้นอยู่กับวิธีการติดตั้ง gcc - มันอาจถูกติดตั้งจากแพ็คเกจหรือรวบรวมและติดตั้งจากแหล่งที่มา

เป็นไปได้ว่าไลบรารี gcc ระบบพร้อมใช้งานแทนการติดตั้งใหม่ ดังนั้นจำเป็นต้องระบุตัวแปรสภาพแวดล้อมที่จะหาห้องสมุดตัวอย่างในบรรทัดคำสั่งเช่นนี้:

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

ฉันแก้ไขสิ่งนี้อย่างถาวรด้วยการอัปเดตลิงก์/usr/lib64/libstdc++.so.6ให้ชี้ไปที่เวอร์ชันใหม่กว่าที่ฉันเคยใช้/usr/local/lib64/libstdc++.so.6ด้วยคำสั่งนี้: ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6. รุ่นเก่ายังคงอยู่โดยไม่มีลิงก์ที่ชี้ไปหากคุณต้องการเปลี่ยนกลับ แฮ็กบิต แต่ใช้งานได้
แมทธิว

2

ฉันมีหลายครั้งหลายปีที่ผ่านมาด้วยแพ็คเกจที่แตกต่าง มันได้รับการแก้ไขโดย:

sudo apt-get dist-upgrade

หาก dist ของคุณสามารถอัปเกรดได้มันจะทำให้ไลบรารี C ++ ใหม่และการกำหนดค่าใหม่เช่นทำงานได้อีกครั้ง ปัญหานี้เกิดจากระบบของคุณไม่ได้ชี้ไปที่ไลบรารี่ที่ถูกต้อง ในกรณีของฉันมักเกิดจากการชี้ไปที่เวอร์ชันคอมไพเลอร์ข้ามของไลบรารี


2

before_install:

# วิธีแก้ปัญหานี้จำเป็นต้องมีเพื่อหลีกเลี่ยงข้อผิดพลาด libstdc ++ ขณะเรียกใช้ hugo แบบ "ขยาย" พร้อมการรองรับ 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

ติดตั้ง:

  • 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

ฉันพบวิธีแก้ปัญหานี้ที่นี่


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! ฉันขอแนะนำให้แก้ไขคำตอบนี้เพื่อขยายด้วยรายละเอียดเฉพาะเกี่ยวกับสิ่งที่คำสั่งนี้ควรจะบรรลุ (ดูเพิ่มเติมฉันจะเขียนคำตอบที่ดีได้อย่างไรสำหรับคำแนะนำทั่วไปเกี่ยวกับคำตอบประเภทใดที่ถือว่ามีค่ามากที่สุดใน Ask Ubuntu)
David Foerster

6
ทำไมcpไม่ln -s?
AB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.