g++ libstdc++.so.6:从 4.8.5 升级到 GCC 版本 7.3.0 后找不到版本 'CXXABI_1.3.9'

g++ libstdc++.so.6: version `CXXABI_1.3.9' not found after upgrade to gcc version 7.3.0 from 4.8.5

本文关键字:版本 找不到 CXXABI GCC so libstdc++ g++      更新时间:2023-10-16

我想问题是 g++ 版本 7.3.0 仍在使用旧的 stdc lib ,我不确定..
我如何检查 ? 以及如何升级到新版本,因为应用程序的
运行时错误 IM 如下所示:

./a.out
./a.out: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./a.out)
./a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./a.out)

这就是我现在拥有的:

g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --disable-multilib --enable-languages=c,c++
Thread model: posix
gcc version 7.3.0 (GCC)

这是我的编译/链接标志:

g++ echo.cpp src/*.cpp -Wall -O0 -g -std=c++14  -I/home/vagrant/libuv/include -Isrc -L/home/vagrant/libuv/build -lssl -lcrypto  -Wl,--no-as-needed -Bstatic -luv_a -ldl -lpthread

这些是搜索后我的 STDC 文件:

/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
/usr/local/lib64/libstdc++.so
/home/vagrant/gcc-7.3.0/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/home/vagrant/gcc-7.3.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/home/vagrant/gcc-7.3.0/prev-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so

您动态链接了C++标准库,然后将其替换为其他版本。

现在安装在计算机上的版本与程序所需的版本不兼容,因此无法运行。

重新生成项目,使其链接到较新版本,或降级 GCC。

将来,您可能希望考虑静态链接标准库,以便此特定版本仅与可执行文件捆绑在一起。但这有缺点(你可以研究(。

相关文章: