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

在CentOS 6.5上离线安装gcc,你需要先下载gcc及其依赖的包,并将它们上传到服务器上。你可以从以下链接下载gcc及其依赖的包:http://download.csdn.net/download/achilles12345/9948824。将下载的包放在一个目录下,比如创建一个名为gcc的目录,并将所有的包放在这个目录下。 然后,你可以按照以下命令的顺序安装gcc及其依赖的包: 1. 安装ppl包:rpm -ivh gcc/ppl-0.10.2-11.el6.x86_64.rpm 2. 安装cloog-ppl包:rpm -ivh gcc/cloog-ppl-0.15.7-1.2.el6.x86_64.rpm 3. 安装mpfr包:rpm -ivh gcc/mpfr-2.4.1-6.el6.x86_64.rpm 4. 安装cpp包:rpm -ivh gcc/cpp-4.4.7-4.el6.x86_64.rpm 5. 安装kernel-headers包:rpm -ivh gcc/kernel-headers-2.6.32-431.el6.x86_64.rpm 6. 安装glibc-headers包:rpm -ivh gcc/glibc-headers-2.12-1.132.el6.x86_64.rpm 7. 安装glibc-devel包:rpm -ivh gcc/glibc-devel-2.12-1.132.el6.x86_64.rpm 8. 安装gcc包:rpm -ivh gcc/gcc-4.4.7-4.el6.x86_64.rpm 9. 安装libstdc++-devel包:rpm -ivh gcc/libstdc++-devel-4.4.7-4.el6.x86_64.rpm 10. 安装gcc-c++包:rpm -ivh gcc/gcc-c++-4.4.7-4.el6.x86_64.rpm 安装完成后,你可以执行gcc -v命令来查看gcc的版本号,如果成功显示版本号,则表示安装成功。请注意,你可以尝试一次性复制并粘贴这些命令到命令行中执行,而不需要逐条复制。 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* [centos6.5上离线安装gcc](https://blog.csdn.net/achilles12345/article/details/77539629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [在centos 6.5上离线升级gcc及make编译遇到的一些错误](https://blog.csdn.net/whenever5225/article/details/109695569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值