在更新到gcc 7.3之后将libstdc ++。so.6更新到GLIBCXX_3.4.21和CXXABI_1.3.9

Leo*_*Leo 5 gcc libstdc++

我有一个RHEL服务器(Maipo),我做了安装gcc 7.3(gcc 7.3.0)-发布于2018年1月25日。对于安装gcc,我遵循了如何在CentOS 7.2上使用yum安装gcc 5.3?

但是,当我安装某些软件时(需要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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Fun*_*ype 5

我还从源代码构建了 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)
Run Code Online (Sandbox Code Playgroud)

然后我调查了:

>ls -ali /lib64/libstdc++.so.6
37631 lrwxrwxrwx. 1 root root 19 ??? 17 06:38 /lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
Run Code Online (Sandbox Code Playgroud)

我发现我需要比 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
Run Code Online (Sandbox Code Playgroud)

在那一刻,我需要将 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
Run Code Online (Sandbox Code Playgroud)

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