LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1981|回复: 1

关于libstdc++.so.5与关于libstdc++.so.6的兼容问题

[复制链接]
发表于 2007-10-19 17:21:20 | 显示全部楼层 |阅读模式
最近在使用别人用gcc3.3.4(使用的C++标准库是libstdc++.so.5)编写的共享库(so文件)的时候, 发现一个怪问题.
我用的是gcc3.4.5(使用的C++标准库是libstdc++.so.6), 我在程序中需要使用别人的库, 编译的时候, link阶段有个warning, 提示 共享库使用libstdc++.so.5,可能与libstdc++.so.6冲突,  只是warning, 编译倒是成功了.
但是在运行的时候, 有时候莫名其妙的异常退出.
查看堆栈信息, 原来是map容器析构的时候发生的,
map<string, ***>
map容器析构时, 先析构string, 而string析构时又执行delete操作, 而delete操作最终调用free来释放内存, 根据堆栈显示来看, 就是free导致的异常.

网上搜了一下, 发现很多人遇到类似的问题, 应该是libstdc++.so.5与libstdc++.so.6的兼容问题, 不知道有没有知道具体原因的?
发表于 2007-10-20 00:25:54 | 显示全部楼层
gcc 3.4 开始使用 C++ ABI version 2 ,与之前的版本 1 不兼容。你最好也使用 gcc-3.3 来编译你的程序。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表