动态库的gcc版本不一致造成的编译问题的解决办法
来源:互联网 发布:淘宝短网址还原 编辑:程序博客网 时间:2024/05/28 17:04
在Linux上使用更高的gcc/g++版本编译生成的动态库来链接应用程序时,会出现“/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found”的问题。
我们使用ldd检查动态库的依赖性,如下所示。
[root@localhost lin32]# lddlibcxxsingletondll.so
./libcxxsingletondll.so:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by./libcxxsingletondll.so)
linux-gate.so.1=> (0x00447000)
libstdc++.so.6=> /usr/lib/libstdc++.so.6 (0x001be000)
libm.so.6=> /lib/libm.so.6 (0x00d36000)
libgcc_s.so.1=> /lib/libgcc_s.so.1 (0x00145000)
libc.so.6=> /lib/libc.so.6 (0x002ab000)
/lib/ld-linux.so.2(0x007cc000)
原因在于libstdc++.so.6的版本过低,需要下载新版本的lib文件重新建立连接才行。
使用strings命令检查libcxxsignletondll.so使用的GLIBC的版本:
[root@localhost lin32]# stringslibcxxsingletondll.so | grep GLIBC
GLIBC_2.0
GLIBC_2.1
GLIBC_2.3
GLIBC_2.1.3
GLIBC_2.3.2
GLIBCXX_3.4.9
GLIBCXX_3.4.14
GLIBCXX_3.4.11
GLIBCXX_3.4
使用strings命令检查libstdc++.so使用的GLIBC版本:
[root@localhost lin32]# strings/usr/lib/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
GLIBC_2.0
GLIBC_2.3
GLIBC_2.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
从上面可以看出libstdc++.so.6中缺少GLIBCXX_3.4.14,所以会出现GLIBCXX_3.4.14没有找到的错误。
检查/usr/lib目录下的libstdc++.so.6的库文件:
[root@localhost lin32]# ll/usr/lib/libstdc++.so.6*
lrwxrwxrwx. 1 root root 19 12月 2 2010 /usr/lib/libstdc++.so.6 ->libstdc++.so.6.0.13
-rwxr-xr-x. 1 root root 942040 7月 26 2010/usr/lib/libstdc++.so.6.0.13
发现libstdc++.so.6链接到libstdc++.so.6.0.13上,但是libcxxsingletondll.so需要使用的是libstdc++.so.6.0.14。
百度下libstdc++.so.6.0.14,找到该库的网址:
http://download.csdn.net/download/wuquan_1230/3608148
从其它版本高的机器上拷贝libstdc++.so.6.0.14到本地,然后拷贝到/usr/lib目录下,并且建立软链接,命令如下:
# sodu ln -sf libstdc++.so.6.0.14libstdc++.so.6
[root@localhost lin32]# stringslibstdc++.so.6.0.14 | 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
GLIBC_2.0
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
- 动态库的gcc版本不一致造成的编译问题的解决办法
- 库版本造成的编译链接问题
- Linux中gcc和cc的版本不一致的解决办法
- S3C44B0x 开cache后造成不一致问题的解决办法
- ubuntu 安装 vmware 提示gcc版本不一致的问题
- eclipse的jdk编译版本项目JDK编译版本不一致解决办法
- Android 编译有关gcc版本的问题
- nginx反向代理tomcat,由于客户端输入的端口不一致造成网页basehref错误的问题及解决办法
- 项目启动容器不一致造成的编码问题
- 导入github下载的项目时,由于gradle版本不同而造成的无法编译解决办法
- oracle版本不一致问题的处理
- gsoap网络服务版本不一致的问题
- vs2005版本不一致引起的问题
- @Override jdk版本不一致引发的问题
- 如何解决代码版本不一致的问题
- hbase probuf版本不一致问题的解决
- SDK 和 ADT版本不一致的问题
- Spring的maven配置版本不一致问题
- 读百本书不如行百里路,比不了古人那么的博学,作为软件行业的一员,学习已经是一种习惯了
- 大学生电子设计大赛(内容有点多,细细看看,应该会有收获)
- 《设计模式的艺术——软件开发人员内功修炼之道》交流贴
- Db class for PHP
- Mac下反编译APK
- 动态库的gcc版本不一致造成的编译问题的解决办法
- Java测试五
- V C6.0++ 创建窗口
- APK安装过程及原理详解
- 在Mac OS X中配置Apache + PHP + MySQL
- android ListView 几个重要属性
- Java与设计模式(04)--单例模式
- android分辨率(屏幕适配)
- winform中读写SQLite数据库例子