Score:1

libstdc++.so.6 กำลังลิงก์ไปยังเวอร์ชันที่ไม่ถูกต้อง

ธง vn

ในอดีต ความไม่รู้ของฉันทำให้ฉันยุ่งกับเวอร์ชัน gcc/g++ ปัจจุบัน ผมใช้อยู่ อูบุนตู 18.04 และวิ่ง gcc -- รุ่น ให้ฉันนี้:

gcc (อูบุนตู 8.4.0-1ubuntu1~18.04) 8.4.0
ลิขสิทธิ์ (C) 2018 Free Software Foundation, Inc.
นี่เป็นซอฟต์แวร์ฟรี ดูแหล่งที่มาสำหรับเงื่อนไขการคัดลอก ไม่มี
การรับประกัน; ไม่แม้แต่สำหรับการค้าหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ

อย่างไรก็ตาม หลังจากการดีบัก ฉันรู้ว่า libstdc++.so.6 ของฉันเชื่อมโยงกับเวอร์ชันที่ไม่ถูกต้อง ฉันรู้เรื่องนี้ด้วยการวิ่ง ls -l /usr/lib/x86_64-linux-gnu/libstdc++.so.6ซึ่งทำให้ฉัน:

lrwxrwxrwx 1 รูทรูท 19 พฤษภาคม 19 2020 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.28

ตรวจสอบกับ เอบีไอเห็นได้ชัดว่ามาจาก gcc 9.3.0 ซึ่งฉันจำได้ว่าเคยติดตั้งเมื่อถึงจุดหนึ่ง สิ่งนี้ทำให้ฉันมีข้อบกพร่องแปลก ๆ เมื่อเขียนโปรแกรม C ++

ตอนนี้ฉันต้องการเชื่อมโยง libstdc++.so.6 กลับไปที่ gcc 8 แต่ฉันไม่แน่ใจว่าวิธีที่งี่เง่าน้อยกว่านี้คืออะไร ฉันควรลองลบ GCC 9 และติดตั้ง GCC 8 ใหม่หรือไม่

วิ่ง ค้นหา libstdc++.so.6 ให้ฉันนี้:

/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
hr flag
AFAIK, `libstdc++6.0.xx` ไม่เกี่ยวข้องกับเวอร์ชัน gcc เฉพาะ - เป็นส่วนหนึ่งของแพ็คเกจ `libstdc++6` แบบสแตนด์อโลน คุณกำลังพยายามแก้ปัญหาอะไรอยู่
Anh Tran avatar
vn flag
@steeldriver ดูเหมือนว่าไบนารีของฉันกำลังเชื่อมโยงไปยัง libary ที่แชร์ผิด (libstdc++.so.6) ซึ่งทำให้โปรแกรมขัดข้อง (ข้อผิดพลาด seg)
cn flag
Ray
จะเกิดอะไรขึ้นถ้าคุณลองลบแพ็คเกจที่เป็นของ `libstdc++6.0.28` แล้วติดตั้งแพ็คเกจที่คุณต้องการ นั่นคือไม่ต้องสนใจปัญหา gcc 8 หรือ 9
Anh Tran avatar
vn flag
ฉันควรทำอย่างไรเพื่อดูว่าแพ็กเกจใดขึ้นอยู่กับ libstdc++6.0.28
N0rbert avatar
zw flag
โปรดเพิ่มผลลัพธ์ของ `dpkg -S libstdc++.so.6` และ `apt-cache policy $(dpkg -S libstdc++.so.6 | awk -F: '{print $1}' | sort -u)` ไปที่ คำถาม.
hr flag
ฉันคิดว่าคุณควรทำการดีบั๊กเพิ่มเติมเกี่ยวกับสาเหตุของ segfault ก่อนที่จะลงไปที่โพรงกระต่ายนี้ - AFAIK libstdc++ ให้ความเข้ากันได้ *ย้อนหลัง* เสมอ เช่น ในกล่อง 18.04 ของฉัน (โดยที่ฉันมี libstdc++6.0.29.so) จะมี CXX ABI จาก 1.3.1 (gcc 4.?) ถึง 1.3.13 (gcc 11.1) ตามที่ระบุโดยเอาต์พุตของ `nm -D /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29 | เกรป CXXABI`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา