作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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 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/并创建新的符号链接(symbolic link)。
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,但我不明白它是如何工作的以及它的目的是什么(为什么版本不够)
关于gcc - 更新到 gcc 7.3 后将 libstdc++.so.6 更新到 GLIBCXX_3.4.21 和 CXXABI_1.3.9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797965/
我是一名优秀的程序员,十分优秀!