LinuxSir.cn,穿越时空的Linuxsir!

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

gcc与libstdc++.so.6与版本问题?麻烦大家看一下

[复制链接]
发表于 2009-9-25 15:25:41 | 显示全部楼层 |阅读模式
我的是fedora 10
gcc 4.3.2

我在运行一个程序时遇到了以下错误提示

./deviceQuery: /usr/local/lib/libstdc++.so.6: version `CXXABI_1.3.1' not found (required by /usr/local/cuda/lib/libcudart.so.2)

./deviceQuery是我的运行命令,应该是说用后面的库调用前面的库时版本不对?

是不是我的gcc版本的问题?但我用低一点的gcc3.4.6也是同样的错误

是不是gcc升级过程中有什么配置没做好?
发表于 2009-9-26 10:12:35 | 显示全部楼层
/usr/local/lib/libstdc++.so.6
怎么跑到local lib去了呢??

那个程序是在fedora10编译的么?如果不是,在F10上编译下再说。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-27 13:25:03 | 显示全部楼层
gcc的这个库libstdc++.so.6默认安装的不是这个目录下吗?我是默认安装gcc的

之前make过这个程序了,没返回任何信息啊,用./运行时就有这错误了,请问大家对gcc这个库有何见解?

怎么处理好呢?谢谢!
回复 支持 反对

使用道具 举报

发表于 2009-9-27 17:21:19 | 显示全部楼层
我的fedora11,++库的默认安装位置在/usr/lib下啊~@_@

那就尝试使用绝对路径方式运行看看~?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-27 20:07:52 | 显示全部楼层
感谢你的回复!
现在是,我的/usr/lib下和/usr/local/lib下都有这个libstdc++.so.6,

而我的gcc是:先在没有带gcc的fedora10-live上yum了一个新版本(4.3.2)的gcc,然后因为编程需要,下了个老版本的gcc-3.4.6 tar bz2 按默认安装了,后来移到/usr/bin的目录gcc-3.4.6,   然后又yum回来4.3.2的gcc,移到/usr/bin的目录gcc-4.3.2,最后用连接 ln -s /usr/bin/gcc-3.4.6 /usr/bin/gcc  把gcc连到老版本的gcc3.4.6了

请问我现在的/usr/lib下和/usr/local/lib下的libstdc++.so.6分别属于哪个gcc的?


过程有点复杂呵,请不腻指教!
回复 支持 反对

使用道具 举报

发表于 2009-9-28 08:37:02 | 显示全部楼层
看晕了~~~

期待楼下继续~主要是咱搞不明白,汗~
回复 支持 反对

使用道具 举报

发表于 2009-9-28 09:17:17 | 显示全部楼层
Post by rolyluo;2030965
感谢你的回复!
现在是,我的/usr/lib下和/usr/local/lib下都有这个libstdc++.so.6,

而我的gcc是:先在没有带gcc的fedora10-live上yum了一个新版本(4.3.2)的gcc,然后因为编程需要,下了个老版本的gcc-3.4.6 tar bz2 按默认安装了,后来移到/usr/bin的目录gcc-3.4.6,   然后又yum回来4.3.2的gcc,移到/usr/bin的目录gcc-4.3.2,最后用连接 ln -s /usr/bin/gcc-3.4.6 /usr/bin/gcc  把gcc连到老版本的gcc3.4.6了

请问我现在的/usr/lib下和/usr/local/lib下的libstdc++.so.6分别属于哪个gcc的?


过程有点复杂呵,请不腻指教!


strings /usr/lib/libstdc++.so.6 | grep CXX  看看,版本高的是gcc4的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-9 11:06:00 | 显示全部楼层
执行 strings /usr/lib/libstdc++.so.6 | grep CXX的结果是这个,能看出什么呢?
[root@localhost deviceQuery]# strings /usr/lib/libstdc++.so.6 | grep CXX
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
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
回复 支持 反对

使用道具 举报

发表于 2009-10-9 18:45:19 | 显示全部楼层
根据你的显示结果,/usr/lib/libstdc++.so.6下很显然是3.4的版本~

个人认为,好像你的运行库版本位置和开发时的文件版本位置颠倒了,导致你编译出来的程序,在运行时找不到编译时要用的那个库~
回复 支持 反对

使用道具 举报

发表于 2009-10-9 18:46:19 | 显示全部楼层
对了,你再make下看看,不过,make之前先make clean下~

不好意思,在别处习惯发补丁帖了,经常忽略这个论坛有帖子打补丁(编辑)功能~哈哈~
回复 支持 反对

使用道具 举报

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

本版积分规则

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