源码编译升级安装了gcc
后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
的问题。这是因为升级gcc
时,生成的动态库没有替换老版本gcc
的动态库导致的,将gcc
最新版本的动态库替换系统中老版本的动态库即可解决。
1. 问题原因分析
为了安装最新版本的Node.js
(最新版本的Node.js
使用了C++ 11
中,而C++ 11
需要code>gcc 4.8+才能支持),将gcc
升级到了当前最新版本v 5.2.0
。升级后,成功编译安装了新版本的Node.js
(v 4.2.1
),但运行时程序时出现了以下错误:
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node) node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by node) node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
输出结果如下:
GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH
从以上输出可以看出,gcc
的动态库还是旧版本的。说明出现这些问题,是因为升级gcc
时,生成的动态库没有替换老版本gcc
的动态库。
2. 问题处理
执行以下命令,查找编译gcc
时生成的最新动态库:
find / -name "libstdc++.so*"
输出如下:
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 //最新动态库 ……
/home/gcc-5.2.0/gcc-temp
是升级gcc时的输出目录。
将上面的最新动态库libstdc++.so.6.0.21
复制到/usr/lib64
目录下:
cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
复制后,修改系统默认动态库的指向,即:重建默认库的软连接。
切换工作目录至/usr/lib64
:
cd /usr/lib64
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.21 libstdc++.so.6
默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
现在输出如下:
GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_3.4.20 GLIBCXX_3.4.21 GLIBC_2.3 GLIBC_2.2.5 GLIBC_2.3.2 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH
16 Comments
cauliflower mac and cheese keto
July 7, 2021 at 2:53 pmketo diet and no gallbladder
long term effects of keto diet
July 7, 2021 at 2:23 pmshark tank keto diet pills episode
basic keto diet
July 7, 2021 at 1:45 pmwhat fruits can you eat on keto diet
free dating sheffield
June 26, 2021 at 8:36 amfree speed dating atlanta ga
100 free flirt dating
June 24, 2021 at 6:31 amplenty of fish dating site of free datin
online dating sites 100 percent free
June 23, 2021 at 7:36 pmfree dating sites sex
best free dating websites usa
June 2, 2021 at 5:27 amcredit card free dating sites
which dating sites are actually free
June 2, 2021 at 1:15 amfree dating sites review
free dating married
June 2, 2021 at 1:06 am100% free dating sites for cowboys
free interracial dating services
June 1, 2021 at 7:34 pmwatch speed dating movie free online
best free dating software
May 21, 2021 at 2:08 amdating website free
free dating sexy girls in garden grove ca who want sex
May 20, 2021 at 11:20 pmonline free dating chat
free download dating games
May 20, 2021 at 7:56 pmfree dating sies
best free dating site in australia
May 20, 2021 at 6:40 pmlist of 20 free dating sites
free dating site in italy for free post ads new 2021 only
May 19, 2021 at 6:52 pmfree dating site in italy for free post ads new 2021 only
3+ likes tinder
May 16, 2021 at 11:30 am3+ likes tinder
解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21′ not found 的问题 – rock funs