天天看点

libstdc .so. linux7,关于linux:RHEL7-/usr/lib64/libstdc++.so.6:找不到版本’CXXABI_1.3.8′...

我知道这个问题已经问了很多遍了,但我仍然坚持下去。

我已经审查了以前所有要求的答案

找不到版本" CXXABI_1.3.8"(...必需)

如何解决:[程序名称] /usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本CXXABI_1.3.8([程序名称]要求)

并且我已经阅读了https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_paths

我的系统是RHEL7,我之前安装了gcc 4.8,然后用yum -y install devtoolset-3-gcc devtoolset-3-gcc-c++安装gcc 4.9

然后,成功安装了gcc 4.9。

使用gcc -v,我得到

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-3/root/usr/libexec/gcc/x86_64-redhat-linux/4.9.2/lto-wrapper

Target: x86_64-redhat-linux

Configured with: ../configure --prefix=/opt/rh/devtoolset-3/root/usr --mandir=/opt/rh/devtoolset-3/root/usr/share/man --infodir=/opt/rh/devtoolset-3/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,fortran,lto --enable-plugin --with-linker-hash-style=gnu --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.9.2-20150212/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.9.2-20150212/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux

Thread model: posix

gcc version 4.9.2 20150212 (Red Hat 4.9.2-6) (GCC)

然后,按照其他人的建议设置LD_LIBRARY_PATH,例如:

export LD_LIBRARY_PATH=/opt/rh/devtoolset-3/root/usr/lib/gcc/x86_64-redhat-linux/4.9.2:${LD_LIBRARY_PATH}

但是,错误仍然存在,看来我的较新版本gcc4.9无法正常工作。

任何帮助,将不胜感激!

出现问题是因为devtoolset-x软件包实际上只是包装了标准系统libstdc++.so,因此即使您具有新的编译器,您仍然具有旧的ABI(应用程序二进制接口)。 因此,您真正需要的是一个全新的编译器! 其中将包括一个自己的新库。

要构建编译器,您需要安装一些依赖项:

sudo yum install gmp-devel mpfr-devel libmpc-devel

您可以从官方镜像之一下载GCC的较新版本,获取诸如gcc-8.3.0.tar.gz之类的版本,将其解压缩并放在该目录中

./configure --disable-multilib --enable-languages=c,c++ --prefix=$HOME/local

make -j5

make -j install

然后,只要您需要现代的ABI,

export LD_LIBRARY_PATH=$HOME/local/lib64

一切都可能开始工作。 如果您的应用程序产生了自己的环境(例如Steam),则可能需要将库放置在它正在搜索的路径中。

"重复的"答案是错误的或过时的; 到目前为止,这是正确的解决方案。 我知道,因为我全部尝试了,这才是真正有效的...

感谢您的反对票,在乎解释吗?

我想有人想避免手动编译并找到一个发行版软件包,但是不幸的是,这似乎是rhel7的正确解决方案!

做了yum安装的东西,但仍然说找不到依赖项。 从我提取到工作的路径运行.contribdownload_prerequisites。