由于其他软件需要更高级的glibc 所以升级如下:
首先用centos的yum升级glibc库
yum update glibc
但问题依旧。用命令查看glibc库的信息
rpm -qi glibc
显示系统的glibc库版本为2.5
在CentOS中用更新命令到2.5已经是最新版本了(yum不能更新到指定版本),只好手动下载 glibc 2.11的源码包编译安装更新:
地址:http://ftp.gnu.org/pub/gnu/glibc/glibc-2.11.tar.gz
cd /usr/src
mkdir glibc-2.11-build
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.11.tar.gz
tar zxvf glibc-2.11.tar.gz
cd /usr/src/glibc-2.11-build/
export CFLAGS="-g -O2 -march=i686"
/usr/src/glibc-2.11/configure --prefix=/usr/src/glibc-2.11-build/ --with-headers=/usr/include
make
make install
注意:
1. 在目录usr/src/glibc-2.11执行configure命令时不能执行,需在外部文件夹glibc-2.11-build 执行,
即不能在glibc当前目录下运行configure。
2. 加上优化开关,export CFLAGS="-g -O2 -march=i686",否则会出现错误,此处的i686请参照自己的机器(执行# arch
,可参考此文:http://lpy999.blog.163.com/blog/static/117372061201352841747588/)
3. 要将glibc-linuxthreads解压到glibc目录下。
下载glibc-linuxthreads:
wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.2.tar.gz4. 当有如下错误时:
/home/qt/glibc_build/libc_pic.os: In function `fallocate':
/home/qt/glibc-2.11/io/../sysdeps/unix/sysv/linux/i386/fallocate.c:31: undefined reference to `__call_fallocate'
/home/qt/glibc_build/libc_pic.os: In function `fallocate64':
/home/qt/glibc-2.11/io/../sysdeps/unix/sysv/linux/i386/fallocate64.c:31: undefined reference to `__call_fallocate'
/usr/bin/ld: /home/qt/glibc_build/libc.so: hidden symbol `__call_fallocate' isn't defined
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld 返回 1
make[1]: *** [/home/qt/glibc_build/libc.so] 错误 1
make[1]: Leaving directory `/home/qt/glibc-2.11'
make: *** [all] 错误 2
解决办法:
在/home/qt/glibc-2.11/sysdeps/unix/sysv/linux/i386/fallocate.c中,
extern int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len) attribute_hidden;
int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len) { return 0; }