由于项目需要, 在编译过程中遇到需要将glibc进行升级的编译错误。 于是乎, 各种baidu、google。查找升级教程。 经过了一番操作, 于是升级了。但是系统再也回不去了。 记录以此教训,同时给广大同胞一个提醒。
由于条件不允许, 只能进行源码编译进行升级。
以下流程几乎适用于所有软件包更新, 且方式为源码编译更新
下载
进入网站选择了版本2.27进行下载。完事之后, 解压到目录中glibc-2.27目录
创建编译目录
进入目录glibc-2.27新建目录build
mkdir build
然后进入目录build
生成makefile
../configure --prefix=/opt/glibc-2.27
编译且安装
make && make install
建立软链接
# 首先删除之前的软链接
rm -rf /lib64/libc.so.6
# 然后建立链接
LD_PRELOAD=/opt/glibc-2.27/lib/libc-2.15.so ln -s /opt/glibc-2.27/lib/libc-2.15.so /lib64/libc.so.6
# 当然你也可以去掉删除的步骤, 直接强制建立软链接
LD_PRELOAD=/opt/glibc-2.27/lib/libc-2.15.so ln -sf /opt/glibc-2.27/lib/libc-2.15.so /lib64/libc.so.6
试试看结果
于是执行常用命令 ls, 报错如期到来: Segmentation Fault。之后你会发现大多数命令都是这个错误。 最后重启操作系统发现无法正常启动。我勒个去,重装系统咯。
总结
为什么会出现以上情况呢?因为glibc是Linux较底层的工具库位于内核之上其他工具之下。知道了它的地位后, 你还敢轻易去更新它吗?
最后, 希望有人可以告诉我, 如何正确无错误地更新glibc。
本文记录了一次尝试升级glibc导致系统崩溃的教训,强调了glibc作为Linux底层库的重要性。通过下载、创建编译目录、生成makefile、编译安装等步骤演示了源码升级过程,最终出现Segmentation Fault错误,提示不应轻易更新glibc。
1212





