Trước đây, sự thiếu hiểu biết của tôi đã khiến tôi loay hoay với phiên bản gcc/g++. Hiện tại, tôi đang sử dụng Ubuntu 18.04 và chạy gcc --version
đã cho tôi cái này:
gcc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Bản quyền (C) 2018 Tổ chức phần mềm miễn phí, Inc.
Đây là phần mềm miễn phí; xem nguồn để biết điều kiện sao chép. Không có
sự bảo đảm; thậm chí không vì KHẢ NĂNG BÁN ĐƯỢC hoặc SỰ PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ.
Tuy nhiên, sau khi gỡ lỗi, tôi nhận ra rằng libstdC++.so.6 của mình đang liên kết với phiên bản sai. Tôi biết về điều này bằng cách chạy ls -l /usr/lib/x86_64-linux-gnu/libstdc++.so.6
, đã cho tôi:
lrwxrwxrwx 1 root root 19 May 19 2020 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.28
Kiểm tra chống lại ABI, có vẻ như nó đến từ gcc 9.3.0 mà tôi nhớ đã cài đặt tại một thời điểm. Điều này đã gây ra cho tôi một số lỗi lạ khi lập trình C++.
Bây giờ, tôi muốn liên kết libstdC++.so.6 trở lại gcc 8 nhưng tôi không chắc đâu là cách ít ngu ngốc hơn để thực hiện việc này. Tôi có nên thử gỡ GCC 9 và cài đặt lại GCC 8 không?
Đang chạy xác định vị trí libstdc++.so.6
đã cho tôi cái này:
/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