libxl-3.6.5 在RHEL5.4上无法编译的解决办法
libxl库在linux下编译出现错误,错误如下:
C++编译报错:
C编译报错:
没错,就是GLIBCXX3.4.9 / GLIBCXX3.4.10 / GLIBCXX3.4.11 等一些列的错误
lib/libxl.so: undefined reference to 'std::basic_ostream<char,std::char_traits<char> >& std::__ostream_insert<char,std::char_traits<char> ><std::basic_ostream<char,std::char_traits<char> >&,char const*,int)@GLIBCXX_3.4.9'
从报错可以看出,可能是你的linux系统上的libstdc++.so的版本与libxl.so所需要使用的libstdc++.so的版本不同导致的。
查看系统libstdc++.so库版本,果然较低。
【解决办法】
从官网 http://pkgs.org/download/libstdc++.so.6 下载如下安装包,使用命令安装,安装完之后C或C++编译均通过。
yum install libstdc++-4.4.7-16.el6.i686.rpm
也可在这里下载直接替换 http://download.csdn.net/detail/aflyeaglenku/9421395
当然,使用那个版本的libstdc++.so库与你的linux系统有关。我使用的是RHEL5.4,gcc / g++等都为变动过。还有,对于库的选择,也可以参考下面博文的方法。
继上一博客,你可能已经能够编译通过了,但是无法运行。出现如下错误:
error while loading shared libraries: /usr/lib/libstdc++.so.6: ELF file OS ABI invalid
不要担心,这是你下载的rpm包内的libstdc++.so.6.0.13并没有生效,即并没有更新升级成功。下面介绍
【解决办法】
(第1步)先删除libstdc++.so.6
[root@localhost ~]# rm /usr/lib/libstdc++.so.6
看出差别来了吧!libxl.so的ABI 格式是 System V 的,因此我们需要使用System V 格式的libstdc++.so才能够运行libxl.so的demo程序。