centos6.5 升级 gcc 和 glibc

但是按照官方指导文件完成cuda 和 cuDNN 的安装 并做好链接和环境变量的配置后

运行python 环境 ,在import tensorflow as tf 时报错,都是和gcc glibc 版本相关的一些问题。

具体可能出现CXXABI+  GLIBC_找不到对应动态库等相关的一些错误。
这些错误跟gcc 的版本有关系,因为centos6.5 提供的gcc 默认最高版本就是4.4.7,所以还需要升级gcc 的版本。

具体参考文章如下:

https://blog.csdn.net/zr1076311296/article/details/51334538   (Centos下更新 gcc 版本至 GCC 6.1.0)

https://ftp.gnu.org/gnu/gcc/     (gcc 源码下载地址)
https://itbilu.com/linux/management/NymXRUieg.html  (解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not
found 的问题)

 

第一步:升级gcc

gcc的编译时一个耗时较长的工作。

在对gcc 源码进行编译配置(configure)的时候还会陆续遇见一些centos6.5上的各种基础库版本太旧的问题,
我在这里简单记录一下,自己升级过的一些库,也许不全面,但是以备后效吧。
第一步:编译升级gcc 
从上面提供的地址下载源码,并进行编译和安装 。
按照上边的博客就能顺利安装完成。

第二步:编译升级glibc 
在测试是否能加载tensorflow模块的时候,提示和glibc 库版本太旧相关的信息。
升级glibc 是一件很大的工程,因为你可能需要升级很多其他相关的库。

1 参照glibc-2.24 的源码中有一个安装文件 INSTALL 里面写明了如何configure 和 make 
而且写明了相关依赖库的版本。比如make ,gcc ,binutils ,texinfo ,gettext 等相关库都有要求。
而在升级这些相关库的过程中你会发现你的kernel 和 kernel-headers 的版本又太低了,也需要升级。

环境要求kernel 版本不低于3.2 ,但是系统自带的最新版本是2.6, 所以需要升级。
我升级到了kernel-4.4 把对应的kernel-headers files 版本也升级到了kernel-headers-4.4.
采用的是源码编译升级。具体步骤可以参照下面的博客。
参考博客:
http://blog.51cto.com/xiamachao/1755354  (Linux更新内核的三种方法)
https://www.wn789.com/15071.html   (遇见headers冲突的情况可以参照。)

如果遇见需要安装的kernel-headers 版本和已经安装的旧版本冲突可以尝试:
执行以下命令
# yum --enablerepo=elrepo-kernel -y install kernel-ml-headers
根据 CentOS 版本的不同,此时一般会出现类似于以下的错误提示:

Error: kernel-ml-headers conflicts with kernel-headers-2.6.32-696.20.1.el6.x86_64
Error: kernel-ml-headers conflicts with kernel-headers-3.10.0-693.17.1.el7.x86_64
因此需要先卸载原版内核 headers ,然后再安装最新版内核 headers。执行命令:

# yum remove kernel-headers
确认无误后,输入 y,回车开始卸载。注意,有时候这么操作还会卸载一些对内核 headers 依赖的安装包,比如 gcc、gcc-c++ 之类的
。不过不要紧,我们可以在安装完最新版内核 headers 后再重新安装回来即可。
卸载完成后,再次执行上面给出的安装命令。

# yum --enablerepo=elrepo-kernel -y install kernel-ml-headers
成功安装后,再把那些之前对内核 headers 依赖的安装包,比如 gcc、gcc-c++ 之类的再安装一次即可。

参考链接:
https://blog.csdn.net/officercat/article/details/39520227    针对升级glibc 
我一开始选择的是glibc-2.24但是在编译的时候出现了一些定位不明的问题,有人说glibc的版本太新了,所以后续尝试一下
glibc-2.20是否能顺利make成功。

错误一:
rpc_main.c:37:19: 致命错误:errno.h:没有那个文件或目录

我推断这是因为我在安装kernel-headers 升级版的时候卸载掉旧版的glibc-devel 和 glibc-headers 的缘故
尝试办法:先安装上系统默认的旧版本的glibc-devel glibc-headers ,重新编译新版本的glibc-2.20

解决办法:
先安装旧版本的glibc-devel glibc-headers

错误二:
报错execvp没有权限  
解决办法: chmod 755 /scripts/cpp   进行赋权在重新编译。

错误三:
make 报错解决后,接续执行 make install :报错 [install-symbolic-link] Error 1
没找到有效的解决办法。

升级glibc 2.12 - glibc 2.17 的最终解决办法
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-
55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-
2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-
2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-
headers-2.17-55.el6.x86_64.rpm

sudo rpm -Uvh glibc-2.17-55.el6.x86_64.rpm \
glibc-common-2.17-55.el6.x86_64.rpm \
glibc-devel-2.17-55.el6.x86_64.rpm \
glibc-headers-2.17-55.el6.x86_64.rpm

其中出现过一个依赖关系,depend on elrepo-release-6-8.el6.elrepo.noarch (installed)
用yum remove elrepo-release-6-8.el6.elrepo.noarch 卸载掉,然后重新执行以上命令,最终成功升级。

感谢:
https://gist.github.com/harv/f86690fcad94f655906ee9e37c85b174

你可能感兴趣的:(人工智能)