centos环境升级glibc到2.17及过程中遇到的问题

升级glibc到2.17及出现的问题

开发要求libc库最低是2.17,但是我这个是2.12的,当然不能用了,还好,gcc 4.8.5的,直接用来编译升级就好了。

开始前

执行程序的时候报了一个错:

/lib64/libc.so.6 version GLIBC_2.14 not found

很明显链接的库不是2.14的。根据 tlpi上所说的,动态加载库有三个名字比较重要。文件名,库名,链接器名,而且用ldconfig 来进行管理与更新。如:

  • realname : libmath.so.1.3 文件名
  • soname : libmath.so.1 库名
  • linkername : libmath.so 链接器编译的时候链接的名称。

ldconfig命令干的活,就是在默认目录和我们制定的库目录内寻找所有的库文件,然后根据文件名来更新最新的连接。比如吧,看一下我们需要的 libc.so.6现在的指向。

ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 Jul  9 22:30 /lib64/libc.so.6 -> libc-2.12.so

瞧,是个符号链接文件吧。我们就是要把后面的变成2.18来。

升级

升级非常的简单:

wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
tar –zxvf glibc-2.17.tar.gz
cd glibc-2.17
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make –j4
make install     #这一步切记。就算提示error 先不要慌 接着往下走

安装后就会发现, 这一步 不一定大家都会顺利实现,请看下面遇到的问题:

ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 Jul  9 22:30 /lib64/libc.so.6 -> libc-2.18.so

遇到的问题

我开始没有执行 make install,然后想着不安装,自己编译了受手动制定链接定制就行了。

果断的一个 rm -f /lib64/libc.so.6,然后,结果就坑了。所有的命令都执行不了,因为没有了这个共享库了,很多命令都是基于这个库的。型号,万能的谷歌。

让我先把命令找回来。想到这个动态库本来就是链接到一个真实文件的,那如果我们要指定加载的库位置,不需要这个链不也是可以的,确实是这样的。我们可以指定运行时加载库的加载库

LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

这样就恢复原状,后面执行 make install就OK了

在make install时报错error

#有些人会在make install后出现error。这儿error我没去细究,此时可以查看一下系统此时的GLIBC版本,参考一开始的做法。如果版本未升级,我们只能手动安装一下:
首先make是成功了,那么我们会发现build目录下编译出了一个新的libc.so.6 (/glibc-build-2.17/libc.so.6, 我们会发现这实际上也是一个软连接,真实的lib文件是libc.so

make: *** [install] Error 2     这就是上面的报错
然后:
[[email protected] build]# pwd
/lib64/glibc-2.17/build
[[email protected] build]# ll /lib64/lobc.so.6
ls: /lib64/libc.so.6: version `GLIBC_2.14‘ not found (required by /lib64/librt.so.1)
ls: /lib64/libc.so.6: version `GLIBC_2.14‘ not found (required by /lib64/libpthread.so.0)
[[email protected] build]# ll libc.so
libc.so    libc.so.6
这里的libc.so即为真实的lib文件
接着:
[[email protected] lib64]# LD_PRELOAD=/lib64/glibc-2.17/build/libc.so  ln -sf /lib64/libc-2.17.so /lib64/libc.so.6
[[email protected] lib64]# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE
说明连接安装成功

原文地址:http://blog.51cto.com/13922718/2343612

时间: 2024-11-05 22:39:53

centos环境升级glibc到2.17及过程中遇到的问题的相关文章

在Windows Server 2008 R2下搭建jsp环境(四)-在测试的过程中可能出现的问题

环境基本部署好了之后,便开始测试,一定要让他经得起"考验",他才会值得你的信赖.Tomcat服务器部署成功的的验证方法(默认端口的情况下): 1.loacalhost:8080 2.127.0.0.1:8080 3.主机IP:8080 注:360浏览器给的错觉是每次都能打开,其实它有"记忆"功能,一定要多刷新几次,最好使用,谷歌或火狐浏览器. 在这里我给大家分享一下,在测试的过程中可能出现的问题 测试故障1: 在tomcat中发布项目之后,用IP地址不能访问项目而用

linux 环境下安装oracle11g方法及安装过程中遇上的问题解决方法

 Oralce安装教程 1.先安装需要的依赖包 找到哪个没有安装,直接yum install XX,直到所有的都安装完成.注意,可能一个包安装了,再次执行检查,还是提示没有安装,那么就不需要管他们了,继续安装下面的. rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-deve

centos 升级 glibc和glibcxxx ,解决error: Failed dependencies等问题

背景: 在vm中的linux中,安装mysql5.6的过程中,出现了缺少依赖的问题,具体报错如下. 报错一: [[email protected] local]# rpm -ivh MySQL-server-5.6.47-1.el7.x86_64.rpm warning: MySQL-server-5.6.47-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependen

Centos6.5 升级glibc解决“libc.so.6: version GLIBC_2.14

研发发来邮件说线上有台服务器跑程序报错,信息如下: /agent: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by./agent)从上面报错可以看出,程序运行时候,没有找到"GLIBC_2.14"这个版本库,而默认的Centos6.5 glibc版本最高为2.12, 所以需要更新系统glibc库 glibc是gnu发布的libc库,即c运行库,glibc是linux系统中最底层的api,几乎其它任何运行库都会依

升级glibc的感慨,

1. 直接升级 glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现... 总的来说,不说运行在Linux上的一些应用,或者你之前部署过的产品,就是很多linux的基本命令,比如cp, rm, ll之类,都得依赖于它 网上很多人有惨痛教训,甚至升级失败后系统退出后无法重新进入了.. 对于CentOS这样的系统,为了追求

Centos下升级Python

Centos下升级Python 一.查看本机Pyhton版本 本机Centos6.5 预带Pyhton版本为2.6.6 # python --version >>Python 2.6.6 二.下载欲升级最新Python安装包 可以去官网找最新安装包 https://www.python.org/downloads/ 三.编译安装Python wget   tar -zxvf  Python-2.7.10.tgz cd Python-2.7.10 ./configure make &&a

CentOS环境下,gdb调试中出现:Missing separate debuginfos, use: debuginfo-install.....的问题

在gdb调试时segmentation fault问题时,遇到下面的了问题: Program received signal SIGABRT, Aborted.0x00007ffff73eb925 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:6464 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);Missing separate debuginfos, use:

centOs下升级mysql

前言:今天在centOS上将mysql版本由5.1升级到5.7的时候出现了各种问题,不过经过一步步的调查解决了问题,下面就记录一下过程,其中经历了很多次的卸载和删除,在这次记录的过程中,我就按照最后成功的一次顺序来记录,对于其中可能出现的一些错误会做特殊的说明. 1.下载Linux的5.7版本,主要需要两个文件 MySQL-server-5.7.4_m14-1.el6.x86_64.rpm MySQL-client-5.7.4_m14-1.el6.x86_64.rpm 2.备份数据库文件 mys

在CentOS上升级把git从1.7.1升级到1.7.12.4

在CentOS上升级把git从1.7.1升级到1.7.12.4 摘要:本文记录了在CentOS6.3上,把Git从1.7.1升级到1.7.12.4的过程. 1. 概述 升级是在今年6月10日进行的,到今天才有空做个记录,供日后参考. 在我做的一个项目中,服务器CentOS 6.3上,一开始安装的git是1.7.1,现在过了将近一年,想把git升级到最新的版本. 2. 升级过程 动手之前,首先要找资料,读文档,弄明白了再动手不迟,弄错了可能就要走弯路了.我在参考资料中列出了我所能找到作为依据的文档