栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

centos7 glibc2.17升级到glibc2.28

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

centos7 glibc2.17升级到glibc2.28

项目开放过程中,要使用第三方公司的库,他们是在ubuntu18.04上编译的,使用的是glibc2.28版本。

目前本公司的环境是centos7,glibc是2.17版本。因此,要使用第三方的库,就得升级本公司的glibc。

进行glibc的编译前,需要一些准备工作。

解压glibc 后,阅读INSTALL文件,查看需要升级或者安装一些依赖软件。

本机上,gcc 和make 需要手动安装。

其他的yum 安装,就符合版本要求了,yum install texinfo python3 bison

gcc需要安装4.9以上的版本,make需要安装4.0以上的版本。

gcc的安装

centos7默认的gcc版本是4.8.5,需要安装大于4.9以上的版本。

gcc4.8已完全支持c++11

gcc6.1已完全支持c++14

gcc7以上的版本完全支持c++17

因为涉及用到一些c++17的特性,故下载gcc7.5.0版本。

tar -xvf gcc-7.5.0.tar.gz

cd gcc-7.5.0

./contrib/download_prerequisites 下载几个依赖包。

不能下载的 下载  选中对应的版本下载。

下载完毕了,也没必要自己去编译gmp, mpfr mpc,isl 这个包,直接解压到gcc-7.5.0目录下即可

(脚本下载完毕后,也就解压了下)

./configure --prefix=/opt/gcc_build/ --enable-checking=release --enable-languages=c,c++ --disable-multilib

make -j10

make install

看了一些网友的博客,大多就是不配置--prefix,那么就直接安装到/usr/local下了,原先的gcc4.8.5就直接覆盖了。也不知道有没有非法覆盖?

还有就是直接拷贝到/usr/下。

还有就是建立软链接,不过之前的gcc4.8.5就没了,也没卸载。

我是写了一个脚本(就一行)

export PATH=/opt/gcc_build/bin:$PATH

把这个脚本放在/etc/proflie.d/下。

执行source /etc/profile.d/gcc7.5.0.sh

gcc -v 显示的是7.5.0版本。

安装make

make安装的是4.2.1版本

tar -xvf make-4.2.1.tar.gz

cd make-4.2.1

./configure  --prefix=/opt/make_build

make -j10

make install

不费劲了,直接把生成的拷贝到/usr目录下(bin下也就一个文件)

安装glibc

glibc 是linux 底层的API库,升级失败,将导致系统异常。

我是先编译在/opt/glibc_build下,没问题,再编译到/usr下。

tar -xvf glibc-2.28.tar.gz

cd glibc-2.28/

mkdir glibc_build
cd glibc_build

../configure --prefix=/opt/glibc_build --with-headers=/usr/include --with-binutils=/usr/bin

make -j10

make install 

没啥问题。

../configure --prefix=/usr --with-headers=/usr/include --with-binutils=/usr/bin

make -j10

make install 

如果报错
/usr/bin/perl scripts/test-installation.pl /tmp/glibc-2.31/build/ 
/usr/bin/ld: cannot find -lnss_test2
...

请修改scripts/test-installation.pl,新增如下内容

报错 undefined reference to '_nsl_default_nss@GLIBC_PRIVATE'

请加--enable-obsolete-nsl

../configure --prefix=/root/glibc_build --with-headers=/usr/include --with-binutils=/usr/bin --enable-obsolete-nsl

make -j10

make install

我的成功了

你们呢?

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443813.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号