g ++ libstdc ++。so.6:从4.8.5升级到gcc版本7.3.0后找不到版本“ CXXABI_1.3.9”

问题描述 投票:0回答:1

我想问题是g ++版本7.3.0仍在使用旧的stdc lib,我不确定..我该如何检查?以及由于应用出现运行时错误,我如何升级到新版本看起来像这样:

./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++ g++ libstdc++
1个回答
0
投票

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

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

重建您的项目,使其链接到较新的版本,或降级GCC。

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

© www.soinside.com 2019 - 2024. All rights reserved.