过去,由于我的无知,我曾对 gcc/g++ 版本感到困惑。目前,我正在使用Ubuntu 18.04跑步gcc --version
给了我这个:
gcc (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
但是,经过一些调试后,我意识到我的 libstdc++.so.6 链接到了错误的版本。我通过运行 知道了这一点ls -l /usr/lib/x86_64-linux-gnu/libstdc++.so.6
,它给了我:
lrwxrwxrwx 1 root root 19 May 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 吗?
跑步locate 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