<未测>源码升级安装glibc和rpm升级glibc

时间:2021-08-24 09:57:29

源码升级安装glibc和rpm升级glibc

http://jacklin9.spaces.live.com/blog/cns!A891B52E1182AFB2!346.entry

http://blog.sina.com.cn/s/blog_48eef8410100ap22.html

下载glibc
wget  http://ftp.gnu.org/gnu/glibc/glibc-2.7.tar.gz

下载glibc-linuxthreads
wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.gz

解压
tar -zxvf glibc-2.7.tar.gz
mkdir glibc-build
cd glibc-2.7
tar -zxvf ../glibc-linuxthreads-2.7.tar.gz
cd ..
export CFLAGS="-g -O2 -march=i486"
cd glibc-build
../glibc-2.7/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks

#make
#make install

安装编译过程中需要注意三点:
1、要将glibc-linuxthreads解压到glibc目录下。
2、不能在glibc当前目录下运行configure。
3、加上优化开关,export CFLAGS="-g -O2 -march=i486",否则会出现错误
'#error "glibc cannot be compiled without optimization"'

###################################################################################################################################################
#########################    rpm 升级glibc2.7    ###########################################################################################
###################################################################################################################################################

因公司合作研发的游戏项目 德州扑克 要求,

Linux需要升级 glibc库要2.7以上,所以就尝试了下升级glibc。

由于找不到CentOS5的 glibc2.7 ,就在网上找到了fedora的rpm包来替代,试过暂时是没发现什么问题。以下是步骤。

这里下载相应的rpm包http://archive.fedoraproject.org/pub/archive/fedora/linux/releases/8/Everything/x86_64/os/Packages/

由于我们目前linux都是64位系统,所以我下载4个x64文件:
glibc-common-2.7-2.x86_64.rpm
glibc-headers-2.7-2.x86_64.rpm
glibc-devel-2.7-2.x86_64.rpm
glibc-2.7-2.x86_64.rpm

然后升级的命令为:
rpm -Uvh --aid --nodeps glibc-common-2.7-2.x86_64.rpm
rpm -Uvh --aid --nodeps glibc-headers-2.7-2.x86_64.rpm
rpm -Uvh --aid --nodeps glibc-devel-2.7-2.x86_64.rpm
rpm -Uvh --aid --nodeps glibc-2.7-2.x86_64.rpm

直接强制更新升级。

升级后好像glibc2.7自动生效了。

编译一个程序测试下是否使用了64位的动态库。

#vi hello.c

#include
int main(void)
{
              printf("Hello World!\n");
}

保存退出,然后执行
gcc -o test hello.c
chmod +x test
./test

运行成功!

执行
file test
查看有看到x64,表示使用 64位的动态库。

网上有些地方加优化开关 -O2  时(大写字母O),写的是 -02 (数字零),所以拷贝过来仍然出现3中的错误,所以请注意。

安装完后,可以查看ls -l /lib/libc.so.6已升级

lrwxrwxrwx 1 root root 11 Nov 12 09:24 /lib/libc.so.6 -> libc-2.7.so

测试:
32位:
vim hello.c
 #include

main()
 {
     printf("hello world!\n");
 }

保存退出,然后执行
gcc -o test hello.c
chmod +x test
./test

运行成功!

执行
file test

64位:
#vi hello.c

#include
int main(void)
{
              printf("Hello World!\n");
}

保存退出,然后执行
gcc -o test hello.c
chmod +x test
./test

运行成功!

执行
file test
查看有看到x64,表示使用 64位的动态库。