原文链接
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
问题原因分析
今天在安装vcpkg时遇到了以下错误
./vcpkg: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./vcpkg)
./vcpkg: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./vcpkg)
./vcpkg: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./vcpkg)
运行以下命令检查动态库
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
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
从以上输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。
问题处理
执行以下命令,查找编译gcc时生成的最新动态库:
find / -name "libstdc++.so*"
输出如下:
/app/lib64/libstdc++.so.6
/app/lib64/libstdc++.so.6.0.28
/app/lib64/libstdc++.so
/app/lib64/libstdc++.so.6.0.28-gdb.py
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so
/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/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/lib64/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6
目前我的最新版本为libstdc++.so.6.0.28,将最新动态库libstdc++.so.6.0.28复制到/usr/lib64目录下:
cp /app/lib64/libstdc++.so.6.0.28 /usr/lib64
复制后,修改系统默认动态库的指向,即:重建默认库的软连接,切换工作目录至/usr/lib64:
cd /usr/lib64
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.28 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
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.6
GLIBC_2.4
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
__strtof_l@@GLIBC_2.2.5
symlink@@GLIBC_2.2.5
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
chdir@@GLIBC_2.2.5
fileno@@GLIBC_2.2.5
pthread_cond_destroy@@GLIBC_2.3.2
__strcoll_l@@GLIBC_2.2.5
__nl_langinfo_l@@GLIBC_2.2.5
dgettext@@GLIBC_2.2.5
fseeko64@@GLIBC_2.2.5
wmemcpy@@GLIBC_2.2.5
mbrtowc@@GLIBC_2.2.5
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
wcslen@@GLIBC_2.2.5
__duplocale@@GLIBC_2.2.5
ioctl@@GLIBC_2.2.5
abort@@GLIBC_2.2.5
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
clock_gettime@@GLIBC_2.17
GLIBCXX_3.4.21
pthread_cond_signal@@GLIBC_2.3.2
__assert_fail@@GLIBC_2.2.5
GLIBCXX_3.4.9
_ZSt10adopt_lock@@GLIBCXX_3.4.11
GLIBCXX_3.4.10
bindtextdomain@@GLIBC_2.2.5
wmemcmp@@GLIBC_2.2.5
__strftime_l@@GLIBC_2.3
gettimeofday@@GLIBC_2.2.5
GLIBCXX_3.4.16
setvbuf@@GLIBC_2.2.5
__strxfrm_l@@GLIBC_2.2.5
GLIBCXX_3.4.1
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4
GLIBCXX_3.4.28
_ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4
mbsnrtowcs@@GLIBC_2.2.5
malloc@@GLIBC_2.2.5
fopen@@GLIBC_2.2.5
GLIBCXX_3.4.25
strtold_l@@GLIBC_2.3
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@@GLIBCXX_3.4.5
_ZNSs7_M_moveEPcPKcm@@GLIBCXX_3.4.5
_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
ungetwc@@GLIBC_2.2.5
__wctype_l@@GLIBC_2.2.5
__cxa_atexit@@GLIBC_2.2.5
_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
truncate@@GLIBC_2.2.5
_ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
aligned_alloc@@GLIBC_2.16
_ZSt10defer_lock@@GLIBCXX_3.4.11
__towupper_l@@GLIBC_2.2.5
__wcsxfrm_l@@GLIBC_2.2.5
__fxstat64@@GLIBC_2.2.5
_ZN10__gnu_norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4
iconv_open@@GLIBC_2.2.5
_ZNSs9_M_assignEPcmc@@GLIBCXX_3.4.5
ungetc@@GLIBC_2.2.5
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
__wcscoll_l@@GLIBC_2.2.5
fputc@@GLIBC_2.2.5
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
free@@GLIBC_2.2.5
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4
strlen@@GLIBC_2.2.5
GLIBCXX_3.4.24
_ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@@GLIBCXX_3.4.11
GLIBCXX_3.4.20
fchmodat@@GLIBC_2.4
wmemchr@@GLIBC_2.2.5
opendir@@GLIBC_2.2.5
__xstat@@GLIBC_2.2.5
_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5
GLIBCXX_3.4.12
_ZNSi6ignoreEv@@GLIBCXX_3.4.5
__ctype_get_mb_cur_max@@GLIBC_2.2.5
GLIBCXX_3.4.2
__cxa_finalize@@GLIBC_2.2.5
_ZNSt11char_traitsIcE2eqERKcS2_@@GLIBCXX_3.4.5
GLIBCXX_3.4.6
realpath@@GLIBC_2.3
wctob@@GLIBC_2.2.5
__wcsftime_l@@GLIBC_2.3
__iswctype_l@@GLIBC_2.2.5
GLIBCXX_3.4.15
readdir@@GLIBC_2.2.5
__tls_get_addr@@GLIBC_2.3
sprintf@@GLIBC_2.2.5
_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
stdin@@GLIBC_2.2.5
_ZNSs9_M_assignEPcmc@GLIBCXX_3.4
GLIBCXX_3.4.19
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4
fdopen@@GLIBC_2.2.5
GLIBCXX_3.4.27
syscall@@GLIBC_2.2.5
iconv@@GLIBC_2.2.5
_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4
__newlocale@@GLIBC_2.2.5
poll@@GLIBC_2.2.5
frexpl@@GLIBC_2.2.5
strerror@@GLIBC_2.2.5
fputs@@GLIBC_2.2.5
readlink@@GLIBC_2.2.5
mbsrtowcs@@GLIBC_2.2.5
_ZN10__gnu_norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4
fchmod@@GLIBC_2.2.5
wcrtomb@@GLIBC_2.2.5
putwc@@GLIBC_2.2.5
utimensat@@GLIBC_2.6
_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@@GLIBCXX_3.4.5
strchr@@GLIBC_2.2.5
GLIBCXX_3.4.23
vsnprintf@@GLIBC_2.2.5
fread@@GLIBC_2.2.5
wmemmove@@GLIBC_2.2.5
getenv@@GLIBC_2.2.5
sendfile@@GLIBC_2.2.5
GLIBCXX_3.4.3
GLIBCXX_3.4.7
__errno_location@@GLIBC_2.2.5
strdup@@GLIBC_2.2.5
_ZNSi6ignoreEl@@GLIBCXX_3.4.5
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.5
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4
_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@@GLIBCXX_3.4.5
__uselocale@@GLIBC_2.3
GLIBCXX_3.4.18
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@@GLIBCXX_3.4.5
strcmp@@GLIBC_2.2.5
_ZSt15future_category@@GLIBCXX_3.4.14
_ZNSi6ignoreEl@GLIBCXX_3.4
getcwd@@GLIBC_2.2.5
get_nprocs@@GLIBC_2.2.5
__strtod_l@@GLIBC_2.2.5
nanosleep@@GLIBC_2.2.5
pthread_cond_wait@@GLIBC_2.3.2
_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4
_ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4
_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4
writev@@GLIBC_2.2.5
_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11
fclose@@GLIBC_2.2.5
remove@@GLIBC_2.2.5
statvfs@@GLIBC_2.2.5
_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4.5
_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
_ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4
isspace@@GLIBC_2.2.5
lseek64@@GLIBC_2.2.5
__lxstat@@GLIBC_2.2.5
__freelocale@@GLIBC_2.2.5
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4
bind_textdomain_codeset@@GLIBC_2.2.5
wcsnrtombs@@GLIBC_2.2.5
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@@GLIBCXX_3.4.5
closedir@@GLIBC_2.2.5
stderr@@GLIBC_2.2.5
btowc@@GLIBC_2.2.5
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4
_ZNKSs11_M_disjunctEPKc@@GLIBCXX_3.4.5
_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4
fopen64@@GLIBC_2.2.5
GLIBCXX_3.4.22
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5
_ZNSi6ignoreEv@GLIBCXX_3.4
wcscmp@@GLIBC_2.2.5
fwrite@@GLIBC_2.2.5
pthread_mutex_lock@@GLIBC_2.2.5
_ZNSs7_M_copyEPcPKcm@@GLIBCXX_3.4.5
realloc@@GLIBC_2.2.5
setlocale@@GLIBC_2.2.5
GLIBCXX_3.4.8
fprintf@@GLIBC_2.2.5
GLIBCXX_3.4.13
_ZSt11try_to_lock@@GLIBCXX_3.4.11
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
pthread_cond_broadcast@@GLIBC_2.3.2
GLIBCXX_3.4.17
GLIBCXX_3.4.4
ftello64@@GLIBC_2.2.5
_ZNKSs15_M_check_lengthEmmPKc@@GLIBCXX_3.4.5
strtoul@@GLIBC_2.2.5
pthread_mutex_unlock@@GLIBC_2.2.5
memcpy@@GLIBC_2.14
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4
iconv_close@@GLIBC_2.2.5
__towlower_l@@GLIBC_2.2.5
_ZNSs4_Rep26_M_set_length_and_sharableEm@@GLIBCXX_3.4.5
rename@@GLIBC_2.2.5
GLIBCXX_3.4.26
stdout@@GLIBC_2.2.5
_ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4
mkdir@@GLIBC_2.2.5
wmemset@@GLIBC_2.2.5
fflush@@GLIBC_2.2.5