“ libstdc ++. so.6: ไม่สามารถเปิดไฟล์วัตถุที่ใช้ร่วมกัน: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว”


10

ฉันปล้ำกับโปรแกรมตามข้อมูลในคำถามนี้ ตอนนี้ติดตั้งแล้ว แต่ฉันหาวิธีใช้ไม่ได้ เพื่อนที่ใช้ Ubuntu เวอร์ชันเดียวกันไม่มีปัญหาในการเริ่มต้นหลังจากติดตั้งด้วยวิธีเดียวกัน

นี่คือสิ่งที่ฉันทำ:

$ ./Psychonauts
./Psychonauts: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

ดังนั้นฉันจึงไปข้างหน้าและ:

$ sudo apt-get install libstdc++.so.6
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

ควรสังเกตว่าฉันเริ่มใช้ Linux เมื่อไม่กี่วันที่ผ่านมา

ตกลงดังนั้นฉันจึงจัดการติดตั้งการปรับปรุง apt-file และ apt-file update

อย่างไรก็ตามจากนั้นเราก็พบอุปสรรคอีก

usagiyojimbo@Usagi:~$ sudo apt-file find libstdc++.so.6
[sudo] password for usagiyojimbo: 
E: The cache is empty. You need to run 'apt-file update' first.

ฉันทำอย่างนั้นเมื่อฉันพูดว่า:

File is up-to-date.
Ignoring source without Contents File:
a link they won't let me post

หรือ

File is up-to-date.
Downloading Index a link
No Index available.
Downloading complete file a link

ฉันยังคงได้รับข้อผิดพลาดเดียวกันเมื่อฉันพยายามเรียกใช้ Psychonauts


1
sudo apt-get install libstdc++6
3ventic

คำตอบ:


20

คุณได้รับข้อความแสดงข้อผิดพลาด:

E: Unable to locate package libstdc++.so.6
E: Couldn't find any package by regex 'libstdc++.so.6'

เนื่องจากคุณพยายามติดตั้งไฟล์libstdc++.so.6ที่คุณไม่สามารถติดตั้งได้เนื่องจากไฟล์นั้นอยู่ในแพ็คเกจเดเบียน

คุณสามารถใช้apt-fileเพื่อค้นหาแพ็คเกจที่มีไฟล์นั้น หากต้องการติดตั้งให้พิมพ์:

sudo apt-get install apt-file

จากนั้นคุณต้องอัปเดตดัชนี

sudo apt-file update

หลังจากนั้นคุณสามารถค้นหาแพ็คเกจที่มีไฟล์libstdc++.so.6:

sudo apt-file find libstdc++.so.6

จากนั้นคุณจะพบแพ็คเกจจำนวนมากที่มีไฟล์ที่ค้นหา ในกรณีของคุณแพคเกจที่ถูกต้องคือlibstdc++6:

libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6

จากนั้นคุณสามารถติดตั้งแพ็คเกจที่ต้องการ:

sudo apt-get install libstdc++6

ตกลงดังนั้นฉันจึงจัดการติดตั้งการปรับปรุง apt-file และ apt-file update อย่างไรก็ตามจากนั้นเราก็พบอุปสรรคอีก usagiyojimbo @ Usagi: ~ $ sudo apt-file find libstdc ++. so.6 [sudo] รหัสผ่านสำหรับ usagiyojimbo: E: แคชว่างเปล่า คุณต้องเรียกใช้ 'apt-file update' ก่อน
UsagiYojimbo

เรียกใช้และหลังจากนั้นsudo apt-file update sudo apt-file find libstdc++.so.6อ่านคำตอบข้างต้นอย่างแน่นอน
BuZZ-dEE

2
ไม่แน่ใจว่าสิ่งที่ฉันทำแตกต่างกัน แต่มันเหมาะกับการค้นหาไฟล์ในเวลานี้ ฉันได้รับรายชื่อแพ็คเกจ เมื่อฉันพยายามติดตั้งมันก็บอกว่า libstdc ++ 6 เป็นเวอร์ชั่นใหม่ล่าสุดอยู่แล้ว เมื่อฉันพยายาม. / Psychonauts ก็ยังบอกว่าไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
UsagiYojimbo

และหากคุณกำลังยุ่งกับฮาร์ดแวร์ 32 บิตตรวจสอบให้แน่ใจว่าระบุในตอนท้าย: sudo apt-get install libstdc ++ 6: i386
Ezekiel Kruglick


3

คุณเกือบจะอยู่แค่ใช้ตัวละครมากกว่าที่คุณต้องการ:

sudo apt-get install libstdc++6

... ควรทำเคล็ดลับ


0

ฉันจะแบ่งปันวิธีที่เหมาะกับคุณ ก่อนอื่นคุณควรค้นหาว่าสำเนาอื่นของไฟล์นี้มีอยู่ในเครื่องของคุณหรือไม่:

$ locate libstdc++.so.6

ผลลัพธ์:

/snap/core/6405/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core/6405/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/snap/core/6405/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
/snap/core/6531/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core/6531/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/snap/core/6531/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
/snap/core/6673/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/snap/core/6673/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
/snap/core/6673/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25-gdb.py

อย่างที่คุณเห็น/snap/core/...ไฟล์นี้มีหลายเวอร์ชั่น (ถ้าไม่ใช่วิธีนี้ใช้ไม่ได้สำหรับคุณ)

คุณควรสำรองข้อมูลจากไฟล์ที่มีอยู่:

$ sudo mv /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.backup

จากนั้นคุณสามารถแทนที่เวอร์ชัน snap ล่าสุดเป็นไฟล์ที่เสียหาย:

sudo cp /snap/core/6673/usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

ลองเรียกใช้คำสั่งที่ต้องการอีกครั้ง

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