Không tìm thấy GLIBCXX_3.4.20, làm thế nào để khắc phục lỗi này?


104

Khi tôi thử chạy Trình chỉnh sửa bố cục chương trình (có sẵn trên trang web này ) trên Ubuntu 14.04.1 LTS 64 bit, tôi nhận được đầu ra sau trong thiết bị đầu cuối:

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

Tôi đã thử lệnh stringstrên /usr/lib/x86_64-linux-gnu/libstdc++.so.6như sau và đây là đầu vào và đầu ra:

$ 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

Làm thế nào tôi có thể giải quyết vấn đề này bằng cách nào đó tôi đoán rằng nó có liên quan GCCnhưng không thể tìm ra cách khắc phục vấn đề. Hơn nữa, tôi đã thử PPA theo đề xuất về Làm cách nào để sử dụng GCC mới nhất trên Ubuntu? và có một câu hỏi tương tự cho một phiên bản Ubuntu cũ hơn tại GLIBCXX_3.4.15 không được tìm thấy . Tuy nhiên, sau khi tôi chạy, sudo updatetôi nhận được rất nhiều cảnh báo và danh sách tôi nhận được bằng lệnh chuỗi không có mục mới sau khi cài đặt gcc 4.9, vì vậy tôi đã thanh trừng PPA ( Toolchains Test Builds ) ppa-purge. Bất kỳ trợ giúp, đề xuất về cách tiến hành đều được đánh giá rất cao.


Tìm thấy một giải pháp rồi?
Steven Roose

1
@StevenRoose Tôi đã có thể giải quyết vấn đề, sau khi thêm một số backport và cài đặt một số phần mềm nhưng tôi không nhớ rõ chi tiết khi nhớ chúng, tôi sẽ đăng chúng dưới dạng câu trả lời.
Vesnog

Có vẻ như đây là một hiệu ứng của liên kết biểu tượng: stackoverflow.com/questions/2856438/ Khăn Bạn chỉ đơn giản là không liên kết đến một phiên bản thư viện đủ gần đây.
Ciro Santilli 心 心 事件

Câu trả lời:


102

Tôi đã gặp vấn đề tương tự khi cố gắng chạy chương trình khác và tìm thấy giải pháp trên StackOverflow .

Về cơ bản, chỉ cần thực hiện các lệnh sau: Đầu tiên, cài đặt:

sudo apt-get install libstdc++6

Điều này đã được cài đặt theo mặc định, nhưng dù sao hãy thử nó. Nếu nó không giải quyết được nó, chỉ cần làm như sau:

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

Tôi đã không thực hiện lệnh "nâng cấp", nhưng những người trước đó đã giải quyết nó cho tôi


6
sudo apt-get dist-nâng cấp đã giải quyết vấn đề của tôi
ady

2
vấn đề được giải quyết mà không cần dist-upgradenhư upgradeđề xuất và cập nhật hệ thống của tôi mới nhấtlibstdc++
arainone

2
bổ sung kho lưu trữ, 'cập nhật' và 'nâng cấp xa' là tất cả cần thiết cho tôi.
virtualxtc

5
sau khi cập nhật, bạn có thể kiểm tra phiên bản mới nhất của GLIBCXX nhưstrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya

1
Ubuntu 16.04: Trong tháng 11 năm 2017, thêm 'không tin cậy, và được hỗ trợ' ppa: ubuntu-toolchain-r / kiểm tra qua Add- apt-repositorycập nhật /usr/lib/x86_64-linux-gnu/libstdc++.so.6lên đến và bao gồm GLIBCXX_3.4.24 - và bên cạnh đó, này cập nhật basicall ALL c / c ++ / fortran công cụ phát triển trên máy của bạn
knb

60

Nó đã xảy ra với tôi với anaconda 4.0.0 (như @mjp đã nêu), nhưng cách khắc phục đối với tôi là chạy lệnh này trong môi trường của tôi:

conda install libgcc

6
Điều này đã giải quyết nó cho tôi sau khi thử nhiều giải pháp từ các chủ đề khác.
Shawn Anderson

3
Cũng hoạt động trên Ubuntu 16.04
fviktor

1
Điều này thực sự đã cứu mông tôi một vài lần!
MBZ

Ubuntu 16.04 - đã giải quyết nó cho tôi.
Zhubarb

điều này tốt hơn nhiều .. đã làm việc cho tôi .. đã cố gắng 'nhập ROOT' trong python
MycrofD

11

Tôi gặp vấn đề này - đó là vì Anaconda2không có phiên bản GLIBCXX_3.4.20 của bất cứ thứ gì. Chỉ tối đa 0,19, giống như của bạn.

Tuy nhiên, thư viện của Ubuntu đã có nó . Vì vậy, tôi vừa tạo một liên kết mềm / phím tắt trong thư viện Anaconda sang thư viện Linux thực tế có chứa GLIBCXX_3.4.20, thay thế cái trước đó và nó hoạt động tốt sau khi khởi động lại GUI python (Spyder).

Cần có một thư mục được gọi libstdc++.so.6trong thư viện Anaconda, ở đây : ~/anaconda2/lib. Trong thư mục này là các phiên bản của tập lệnh / mã thư viện, ngoại trừ phiên bản mà bạn đang thiếu: GLIBCXX_3.4.20

Thực hiện theo các bước sau để giải quyết vấn đề:

  1. đi đến đúng vị trí và sao lưuanaconda2 lối tắt hiện tại của bạn (thay đổi tên của nó để nó không bị ghi đè):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. tạo một lối tắt mới bằng cách sử dụng lnlệnh (Tôi giả sử rằng tôi đang ở vị trí trước đó ~ / anaconda2 / lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. khởi động lại spyder / giao diện khác mà bạn sử dụng

Nó sẽ hoạt động ngay bây giờ!


Đối với tôi nó là đủ để chỉ đổi tên conda .so, sau đó nó tìm thấy phiên bản os mà không cần một liên kết
Mingwei Samuel

7

Tôi đã giải quyết vấn đề như thế này (nhưng GLIBCXX_3.4.21) trên CentOS nhưng nó không phụ thuộc vào os. Thư viện là một phần của trình biên dịch gcc, vì vậy cần phải cài đặt hoặc biên dịch phiên bản gcc phù hợp. Đây là bảng các phiên bản của gcc và các phiên bản libstdc ++ thích hợp:

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

(danh sách đầy đủ các phiên bản ở đây )

Nó không phụ thuộc vào cách cài đặt gcc - nó có thể được cài đặt từ gói hoặc được biên dịch và cài đặt từ các nguồn.

Có thể các thư viện gcc hệ thống có sẵn thay vì cài đặt mới. Vì vậy, cần chỉ định biến môi trường nơi tìm thư viện ví dụ trong dòng lệnh như thế này:

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

Tôi đã sửa lỗi này vĩnh viễn bằng cách cập nhật liên kết /usr/lib64/libstdc++.so.6để trỏ đến phiên bản mới hơn mà tôi có /usr/local/lib64/libstdc++.so.6với lệnh này : ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6. Phiên bản cũ vẫn không có liên kết trỏ đến nó nếu bạn cần hoàn nguyên. Một chút hack nhưng nó hoạt động.
Matthew

2

Tôi đã trải qua nhiều năm trong nhiều năm với nhiều gói khác nhau. Nó luôn được giải quyết bằng cách:

sudo apt-get dist-upgrade

Nếu dist của bạn có thể nâng cấp, nó hầu như sẽ luôn đưa xuống một thư viện C ++ mới và cấu hình lại những thứ như chúng hoạt động trở lại. Vấn đề hầu như luôn luôn là do hệ thống của bạn không trỏ đến đúng thư viện. Trong trường hợp của tôi, thường được gây ra bằng cách trỏ đến một phiên bản trình biên dịch chéo của thư viện.


2

trước khi cài đặt:

# Cách giải quyết này là bắt buộc để tránh lỗi libstdc ++ trong khi chạy hugo "mở rộng" với sự hỗ trợ của 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

Tải về:

  • 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

Tôi tìm thấy giải pháp này ở đây


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
Chào mừng bạn đến hỏi Ubuntu! Tôi khuyên bạn nên chỉnh sửa câu trả lời này để mở rộng nó với các chi tiết cụ thể về những gì lệnh này cần phải đạt được. (Xem thêm Làm thế nào để tôi viết một câu trả lời hay? Để có lời khuyên chung về loại câu trả lời nào được coi là có giá trị nhất trên Hỏi Ubuntu.)
David Foerster

6
Tại sao cpvà không ln -s?
AB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.