一、安装gcc 4.8.5

升级到最新内核后,由于删除旧版本内核,gcc因依赖关系被删除,需事先安装gcc的旧版本。

yum install -y gcc gcc-c++

二、下载gcc-12.2.0.tar.gz

官网地址为https://gcc.gnu.org,选择download中的镜像网站,从/software/gcc/releases/gcc-11.2.0中下载源代码文件。

wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-12.2.0/gcc-12.2.0.tar.gz
tar -zxvf gcc-12.2.0.tar.gz

三、下载安装依赖项

cd gcc-12.2.0
./contrib/download_prerequisites
cd ..

四、编译gcc

建立 gcc-12.2.0-bulid 目录,在该目录中执行 gcc-12.2.0 目录中的 configure 命令,可在该目录中生成编译文件,不影响 gcc-12.2.0 源代码目录的文件结构。

mkdir gcc-12.2.0-build
cd gcc-12.2.0-build
../gcc-12.2.0/configure  -prefix=/usr/local/gcc-12.2.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j2 # 2核服务器配置的参数
make install
cd ..

五、配置环境

#设置环境变量
touch /etc/profile.d/gcc.sh
chmod 777 /etc/profile.d/gcc.sh 
echo -e '\nexport PATH=/usr/local/gcc-12.2.0/bin:$PATH\n' >> /etc/profile.d/gcc.sh
source /etc/profile.d/gcc.sh

#设置头文件
ln -sv /usr/local/gcc-12.2.0/include/c++/12.2.0 /usr/include/c++/12.2.0

#设置库文件
touch /etc/ld.so.conf.d/gcc.conf
chmod 777 /etc/ld.so.conf.d/gcc.conf 
echo -e "/usr/local/gcc-12.2.0/lib64" >> /etc/ld.so.conf.d/gcc.conf

#加载动态连接库
ldconfig -v
ldconfig -p |grep gcc

用 reboot 重启服务器。 

六、查看gcc版本

gcc --version
g++ --version
c++ --version

升级成功将显示如下内容。

gcc (GCC) 11.2.0
Copyright © 2021 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。


g++ (GCC) 11.2.0
Copyright © 2021 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。


c++ (GCC) 11.2.0
Copyright © 2021 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。

七、检验某程序用何版本的gcc编译的

 readelf -p .comment /usr/local/python39/bin/python3

String dump of section '.comment':
  [     0]  GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-44)
  [    2d]  GCC: (GNU) 11.2.0 

strings -a /usr/local/openssl-3.0.2/lib64/libssl.a | grep "GCC"

 GCC: (GNU) 11.2.0
GCC: (GNU) 11.2.0

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐