问题描述
启动 vddk 服务时报如下错误:
./vddk: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./vddk)
./vddk: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./vddk)
./vddk: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./vddk)
./vddk: /lib64/libcrypto.so.10: no version information available (required by /usr/local/lib/libthrift-0.10.0.so)
./vddk: /lib64/libssl.so.10: no version information available (required by /usr/local/lib/libthrift-0.10.0.so)
./vddk: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/lib/libboost_date_time.so.1.53.0)
查看系统中所有 GLIBCXX 版本
[root@localhost ~]# strings /lib64/libstdc++.so.6 | grep GLIBCXX
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_DEBUG_MESSAGE_LENGTH
可以看到系统中最高版本为 GLIBCXX_3.4.13。
问题原因
vddk 程序所依赖的 libstdc++.so.6 版本缺失,需要更高版本。
解决方法
找一个更高版本的 libstdc++.so.6,先查看本地有没有,没有则去网上下载一个:
[root@localhost lib64]# locate libstdc++.so*
/opt/vmware-vix-disklib-distrib/lib64/libstdc++.so.6
/opt/vmware-vix-disklib-distrib/lib64/libstdc++.so.6.0.13
/opt/vmware-vix-disklib-distrib/lib64/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/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/lib64 下
# ll libstdc++.so*
lrwxrwxrwx. 1 root root 19 10月 31 14:43 libstdc++.so.6 -> libstdc++.so.6.0.13
-rw-r--r--. 1 root root 1006992 11月 9 23:06 libstdc++.so.6.0.13
libstdc++.so.6 是一个软链接,链接到的是libstdc++.so.6.0.13 文件,所以最高版本是13,将 libstdc++.so.6.0.19 拷贝至 /usr/lib64 目录下,
# cp /opt/vmware-vix-disklib-distrib/lib64/libstdc++.so.6.0.19 /lib64
然后删除原有软链接,重新创建软链接如下:
# rm libstdc++.so.6 -- 删除原来的软链接
# ln libstdc++.so.6.0.19 libstdc++.so.6 -- 重新创建软链接
查看现在的版本:
# strings libstdc++.so.6 | grep GLIBCXX
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_DEBUG_MESSAGE_LENGTH
现在各版本都有了,重新启动vddk,成功启动。
参考文章:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15’ not found错误的解决