红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > SuSE

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

发布时间:2007-11-28 00:48:23来源:红联作者:kbopoeco
  今天在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 条评论