系统: Alibaba云ECS CentOS6.5当前GLIBC版本: 2.12glibc版本:准备升级到2.19
一、GLIBC介绍
glibc是由GNU发行的libc库,即c运行时库。 glibc是linux系统最底层的api,大多数其他运行时库依赖于glibc。 glibc不仅封装了linux操作系统提供的系统服务,还提供了许多其他必需的功能服务的实现。 内核要实现一个功能,需要很长时间才能使用glibc。 由于glibc和内核没有开发在一起,glibc需要与不同版本的内核兼容,内核也需要与不同版本的glibc兼容,双方都承担着历史负担。
GLIBC官网: http://WWW.GNU.org /软件GLIBC
二、升级GLIBC的理由
目前需要在ECS上安装nginx。 提供的版本是1.15.9。 由于使用的nginx已经被编译过,所以编译步骤不会报告错误,而是暂时忽略。 nginx的具体编译参数如下。
builtbygcc4.8. 520150623 (红帽4.8.5-36 ) )绿铜) )。
一体机1.1.1 b 26 feb 2019
ts sni支持启用
配置组件3360-- prefix=/root/MySQL-installer/Nginx-1.15.x /部署/Nginx-1.15.9-STD--用户透明/透明- 8.43--带透明=/根/MySQL-1 zlib-1.2.11-- -带透明=/根/MySQL-inssl -带透明OpenSSL-1.1.1 B-- with-OpenSSL-opt=enable-tlS1 _3--with-http _ SSL _ module-with-http _ stub _1e p _ gzip _ static _ module-_ secure _ link _ module-- with-http _ slice _ module-- with-http _ v2_ module
在nginx的sbin目录中,经过验证后发现:
当时我觉得GLIBC库的版本太低了,自己开始编译GLIBC2.19版本。 不解释编译过程。
三、问题发生的原因
1,编译完成后,需要在系统中指定库文件的路径。 因此,写下/etc/ld.so.conf.d/glibc.conf (自己手动创建的文件)、检入文件的路径。
/opt/glibc-2.19/lib
使用2,ldconfig -v暂时有效加载库文件
2、将库文件的/opt/glibc-2.19/lib/libc.so.6软件连接到系统识别的路径上:
LN-SV/OPT/Glibc-2.19/LIB/Libc.SO.6/LIB 64/Libc.SO.6
完成此步骤后,无论实际执行的命令如何,都会显示段错误。
分段故障
四、解决方案
如果是ssh登录,则此时不能退出。 否则,无论如何也无法登录。 ldconfig是动态链接库管理命令,具有-l参数。 文档中描述如下。
--lmanuallylinkindividuallibraries (手动连接一个库。
在其他配置相同的计算机上,查看/lib64/libc.so.6
发现libc.so.6实际上是一个软连接文件。 此时,需要手动使用ldconfig链接原始的so文件
此时,系统将恢复到原始状态,不报告段错误等问题。
总结: GLIBC是系统的基础依赖文件。 请不要自己随意编译。 如果真的要升级,请使用yum进行升级,不要自己编译。 这是非常困难的,因为编译版本和内核版本之间不一定兼容。
欢迎工作5年的Java工程师朋友们参加Java程序员开发: 721575865
在组内提供免费的Java体系结构学习资料(高可用性、高并发、高性能和分布式、Jvm性能调优、Spring源代码、MyBatis、Netty、Redis、Kafka、Mysql、Mysql