Puncte:1

libstdc++.so.6 se leagă la versiunea greșită

drapel vn

În trecut, ignoranța mea m-a determinat să mă încurc cu versiunea gcc/g++. De moment, folosesc Ubuntu 18.04 și alergând gcc --version mi-a dat asta:

gcc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Drepturi de autor (C) 2018 Free Software Foundation, Inc.
Acesta este software gratuit; consultați sursa pentru condițiile de copiere. Nu este
garanție; nici măcar pentru VANTABILITATE sau ADEPTEREA PENTRU UN ANUMIT SCOP.

Cu toate acestea, după câteva depanări, mi-am dat seama că libstdc++.so.6 se conectează cu versiunea greșită. Am știut despre asta alergând ls -l /usr/lib/x86_64-linux-gnu/libstdc++.so.6, care mi-a dat:

lrwxrwxrwx 1 root root 19 mai 19 2020 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.28

Verificarea față de ABI, se pare că a venit de la gcc 9.3.0, pe care îmi amintesc că l-am instalat la un moment dat. Acest lucru mi-a provocat niște erori ciudate la programarea C++.

Acum, aș dori să conectez libstdc++.so.6 înapoi la gcc 8, dar nu sunt sigur care este modalitatea mai puțin idioată de a face asta. Ar trebui să încerc să elimin GCC 9 și să reinstalez GCC 8?

Alergare localizați libstdc++.so.6 mi-a dat asta:

/opt/nvidia/nsight-systems/2020.3.2/host-linux-x64/libstdc++.so.6
/opt/nvidia/nsight-systems/2020.3.2/target-linux-armv8/host-linux-armv8/libstdc++.so.6
/snap/core18/1988/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core18/1988/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
/snap/core18/1988/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25-gdb.py
/snap/core18/2066/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core18/2066/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
/snap/core18/2066/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25-gdb.py
/usr/lib/i386-linux-gnu/libstdc++.so.6
/usr/lib/i386-linux-gnu/libstdc++.so.6.0.28
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
/usr/share/gdb/auto-load/usr/lib/i386-linux-gnu/libstdc++.so.6.0.28-gdb.py
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28-gdb.py
drapel hr
AFAIK, `libstdc++6.0.xx` nu are legătură cu o anumită versiune gcc - face parte dintr-un pachet autonom `libstdc++6`. Ce problemă reală (e) încerci să rezolvi?
Anh Tran avatar
drapel vn
@steeldriver Se pare că binarele mele se conectează la o bibliotecă partajată greșită (libstdc++.so.6), ceea ce a cauzat prăbușirea programului (seg eroare)
drapel cn
Ray
Ce se întâmplă dacă ați încerca să eliminați pachetul căruia îi aparține `libstdc++6.0.28` și apoi să îl instalați pe cel pe care îl doriți? Adică, ignorați problema gcc 8 sau 9.
Anh Tran avatar
drapel vn
Ce ar trebui să fac pentru a-mi da seama ce pachete depind de libstdc++6.0.28?
N0rbert avatar
drapel zw
Vă rugăm să adăugați rezultatul `dpkg -S libstdc++.so.6` și `politica apt-cache $(dpkg -S libstdc++.so.6 | awk -F: '{print $1}' | sort -u)` la întrebare.
drapel hr
Chiar cred că ar trebui să mai depanați cauza (cauzele) defecțiunilor de seg înainte de a merge în această groapă - AFAIK libstdc++ oferă întotdeauna compatibilitate *înapoi* ABI, de ex. pe caseta mea 18.04 (unde am libstdc++6.0.29.so) oferă ABI-uri CXX de la 1.3.1 (gcc 4.?) la 1.3.13 (gcc 11.1), așa cum este indicat de ieșirea lui `nm -D /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29 | grep CXXABI`

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.