linux下glibc-2.14安装

下载地址:http://ftp.gnu.org/gnu/glibc/

下载glibc-2.14.tar.xz

解压下载的文件,同时在该文件的目录下建立一个build目录。

tar glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
安装步骤
进入到之前建立的build目录下,

../glibc_2.xxx/configure --prefix=/usr/local/glibc-2.14  --with-headers=/usr/include
make -j4
make install
看看现在libc.so.6在哪个位置,然后修改软链接
ln -s  /usr/local/glibc-2.14/lib/libc-2.14.so   /lib64/libc.so.6

问题小结:

1. configure 时的错误1. as 和 ld 版本太低

These critical programs are missing or too old: as ld
原因:as 与 ld 版本太低。 
解决方案:as 与 ld都在binutils 库当中,所以下载软件包更新该库即可。
2. linux-kernel-header too old

configure: error: GNU libc requires kernel header files from Linux 2.6.19 or later to be installed before configuring.
The kernel header files are found usually in /usr/include/asm and /usr/include/linux; make sure these directories use files from Linux 2.6.19 or later.  This check uses <linux/version.h>, so make sure that file was built correctly when installing the kernel header files.  To use kernel headers not from /usr/include/linux, use the
configure option --with-headers.
原因:linux内核版本太低,要求的至少为2.6.19而本人环境为2.6.18,,通过错误的提示可以知道是查看了<\linux/version.h>这个文件中的数据确认该问题。

解决方法:提供一个简单粗暴的办法,骗过编译器即可,就是修改LINUX_VERSION_CODE 为最小版本号对应的值即可((2*2^(16)+6*2^(8)+19) = 132627)。
#define LINUX_VERSION_CODE 132627
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
2. make 时的错误
1. linux/limits.h不存在
fatal error: linux/limits.h: No such file or directory
原因: 就是在/usr/include/linux不存在该文件。是由于没有安装linux-libc-dev.这个博客写的很清楚:
http://blog.csdn.net/u014655590/article/details/38854555

解决方案:安装linux-libc-dev,我是通过去网上下载的.deb文件,通过alien转换为.rpm安装的。


2. maxhostnamelen 未定义
原因: MAXHOSTNAMELEN正常情况下是在 /usr/include/netdb.h 中定义的,但是在我的虚拟机上是没有定义的。但是不知道是不是之前修改了内核版本好的原因,其实2.6.18版本其实是没有定义,所以需要至少2.6.19。

解决方案:修改报错.c文件,在该文件中定义MAXHOSTNAMELEN,在网上百度,一般该值为256。

#define MAXHOSTNAMELEN 256

一些弯路分享


在更新之前百度了如何操作,其中有添加–with-headers = /usr/include/linux。


如果这样添加,后续会出现很多头文件找不到的问题,例如<\linux/errno.h>等,可是该文件时存在的,然后继续百度就会出现有人修改为<\errno.h>就能解决。但是后续会出现一连串的类似的问题。


原因 :其实找不到的头文件就在/usr/include/linux目录下,但是由于开始定义查找的目录就是该目录,之后出现<\linux/errno.h>就会在该目录下的linux目录下查找,明显不存在这样的目录,所以报错。


针对configure中出现的第一个问题,网上也有说可以通过修改configure文件欺骗编译器。(在configure文件中搜索“$AS –version”,然后修改匹配的版本,具体可以百度一下)。


在我的环境中是不能成功的,后续会出现很多关于变量未定义的错误。可能是由于版本问题,定义出现问题。



glibc(GNU C Library)是Linux操作系统中的C语言库,提供了许多函数和组件供开发人员使用。在某些情况下,用户或开发人员可能需要将glibc-2.14降级到glibc-2.12。这可能是因为某些软件或应用程序与glibc-2.12兼容,但在glibc-2.14上运行出现问题。 要将glibc-2.14降级到glibc-2.12,首先需要查找并下载glibc-2.12的源代码。可以从官方网站或其他可信的软件仓库中获取源代码。然后,需要进行编译和安装。 在安装glibc-2.12之前,可能需要卸载或删除当前系统中已安装glibc-2.14版本。卸载glibc-2.14可能会导致系统不稳定或无法启动,因此在执行此操作之前应备份系统或确认可恢复系统状态。 编译和安装glibc-2.12的过程可能会有一些复杂性,并需要具备一定的编程知识和技能。首先,需要进入glibc-2.12源代码所在的目录,并执行`configure`命令以生成编译环境。然后,使用`make`命令编译源代码,并使用`make install`命令安装glibc-2.12。 安装完成后,可能需要进行一些配置,例如更新动态链接器或库的路径。这样确保系统在运行时使用glibc-2.12而不是glibc-2.14。 需要注意的是,将glibc-2.14降级到glibc-2.12可能会导致系统稳定性或兼容性问题。降级glibc可能会影响系统中其他软件的功能和性能。因此,在执行此操作之前,建议先了解软件或应用程序对glibc版本的要求,并评估降级是否是唯一的解决方案。 总之,将glibc-2.14降级到glibc-2.12需要下载、编译和安装glibc-2.12的源代码,并进行一些系统配置。但需要谨慎操作,确保降级前后的系统稳定性和兼容性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值