【问题标题】:Updating libstdc++.so.6 to GLIBCXX_3.4.21 and CXXABI_1.3.9 after updating to gcc 7.3更新到 gcc 7.3 后将 libstdc++.so.6 更新到 GLIBCXX_3.4.21 和 CXXABI_1.3.9
【发布时间】:2018-09-22 16:33:49
【问题描述】:

我有一个 RHEL 服务器 (Maipo),我安装了 gcc 7.3 (gcc 7.3.0) - 发布于 2018 年 1 月 25 日。安装gcc,我关注How to Install gcc 5.3 with yum on CentOS 7.2?

但是,在安装一些我需要的软件(需要 gcc>4.9)时,我仍然遇到 g++ 库的问题。我曾假设按照指示编译 gcc 应该提供正确的库?但我得到:

/lib64/libstdc++.so.6: version CXXABI_1.3.9' not found 
/lib64/libstdc++.so.6: versionGLIBCXX_3.4.21' not found

仍然在 g++ 的 4.8.5 版本中(libstdc++.so.6.0.19 - 它是那里唯一的版本)。我查了一下,没有到1.3.9和3.4.21。

由于我订阅了 RedHat(学术服务器),我无法访问开发者工具包 - 我可用的工具包可以追溯到 gcc 4.8.5。

如果有人知道如何解决这个问题,我将非常感谢您的帮助。如果听起来很愚蠢,请道歉。

【问题讨论】:

    标签: gcc libstdc++


    【解决方案1】:

    航空工程师在这里..只需升级 gcc 版本 9..所有问题都会得到解决。 https://linuxize.com/post/how-to-install-gcc-compiler-on-ubuntu-18-04/ 跟着这个..

    【讨论】:

    【解决方案2】:

    我还从源代码构建了 gcc 7.3。我的示例程序名称是 consolehost。

    我已经完成了以下操作:

    >ldd ./consolehost
    ./consolehost: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by ./consolehost)
    ./consolehost: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./consolehost)
            linux-vdso.so.1 =>  (0x00007ffd79916000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8458cfc000)
            libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f84589f4000)
            libm.so.6 => /lib64/libm.so.6 (0x00007f84586f1000)
            libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f84584db000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f8458118000)
            /lib64/ld-linux-x86-64.so.2 (0x0000556169234000)
    

    然后我调查了一下:

    >ls -ali /lib64/libstdc++.so.6
    37631 lrwxrwxrwx. 1 root root 19 мар 17 06:38 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
    

    我发现我需要比 6.0.19 更新的版本。所以

    >sudo find / -name "libstdc++.so.6*"
    /usr/lib64/libstdc++.so.6
    /usr/lib64/libstdc++.so.6.0.19
    /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
    /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
    /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
    /usr/local/lib64/libstdc++.so.6.0.24
    /usr/local/lib64/libstdc++.so.6
    /usr/local/lib64/libstdc++.so.6.0.24-gdb.py
    /home/declspec/gcc_build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
    /home/declspec/gcc_build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
    /home/declspec/gcc_build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
    /home/declspec/gcc_build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
    /home/declspec/gcc_build/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24
    /home/declspec/gcc_build/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
    

    在那一刻,我需要将 libstdc++.so.6.0.24 复制到 /lib64/ 并创建新的符号链接。

    sudo mv /lib64/libstdc++.so.6 /lib64/libstdc++.so.6.orig
    sudo ln -s /lib64/libstdc++.so.6.0.24 /lib64/libstdc++.so.6
    

    这对我有帮助。希望对你也有帮助。 This link 描述 GLIBCXX,但我不明白这是如何工作的,什么是 porpose(为什么版本不够)

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 2018-08-06
      • 1970-01-01
      相关资源
      最近更新 更多