升级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 来进行管理与更新。如:
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
升级非常的简单:
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 说明连接安装成功
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。