SUSE10下运行程序出错"GLIBCXX 3.4.5 not found"

     今天在suse 10下写了一个测试程序,使用了hash_map,重载了hash函数,编译通过。运行时报错,提示 :

   " /usr/loca/lib/libstdc++.so.6: version GLIBCXX 3.4.5 not found"

    想起上周有几个同事也遇到这个问题,我的解决办法如下 :

    ldconfg -p|grep libstdc++

    出现一堆的链接文件:

    libstdc++.so.6 -->      libstdc++.so.6--->/usr/local/lib/libstdc++.so.6

   libstdc++.so.6 -->       libstdc++.so.6--->/usr/lib/libstdc++.so.6

    *****

    对比 /usr/local/lib/libstdc++.so.6  和 /usr/lib/libstdc++.so.6发现,2个文件差别很大.显然系统中安装了2个不同版本的gcc,在/usr/local下找到了一个gcc3.4.5的安装目录。

   打开/etc/ld.so.conf , 发现其中有一条/usr/local/lib,制定了lib库的默认链接路径

   在ld.so.conf中加上/usr/lib,保存,运行./ldconfig

   问题解决。

   suse10自带的是 gcc4.1的编译器,再安装一个gcc3.4.5编译器就出先默认库文件路径错误的情况了。

   同一台机器上安装2个以上版本gcc时需要特别注意,其实只需要拷贝需要安装的gcc目录下的 bin ,include,lib文件夹到目标机上即可。在/usr/bin下设置不同的软链,例如gcc3,gcc2,gcc4,链接到不同的文件上。再运行时通过设置LD_LIBRARY_PATH 变量来指定不同的链接库路径。就可以避免上述问题的发生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值