anolis7.9离线部署、升级GCC-10.5.0
部署环境如下:
系统:anolis 7.9
网络:离线部署
GCC版本:GCC10.5.0
一、安装准备
需要注意的是,龙蜥和centos不同,龙蜥最小化安装不会默认安装gcc,先rpm安装gcc4.8.5再进行升级
二、基础依赖
因为是离线部署,所需基础依赖相关依赖包可以在anolis.iso镜像的packages中找到对应基础依赖包,如gcc,gcc-c++,perl
gcc:
gcc-c++:
perl:
其他:
把这些需要的离线包上传到 linux 任意目录下,然后依次进入 gcc,gcc+,perl 执行安装命令
rpm -Uvh *.rpm --nodeps --force
三、 GCC依赖库
GCC依赖四个库:GMP、MPFR、MPC、ISL。
GMP:计算任意精度的数学库, 包括支持整数,有理数和浮点。
MPFR: 一个多精度高效的浮点计算C语言库, 基于GMP。
MPC:一个支持高精度复数的算术运算的C库,并能正确的进行结果舍入。
ISL:用于操作集合和线性约束下的整数点的关系的库,支持集合的交,并和补操作。
其中,MPFR依赖GMP,MPC依赖GMP和MPFR,GCC依赖上面四个库,所以推荐的编译安装顺序是GMP->MPFR->MPC->ISL->GCC
GMP-6.3.0 https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz
MPFR-4.2.1 https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz
MPC-1.3.1 https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz
ISL -0.24 http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/isl-0.24.tar.bz2
GCC-10.5.0 http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.5.0/gcc-10.5.0.tar.xz
下面开始依次安装
3.1 GMP
cd /home/soft/gcc
tar -xvf gmp-6.3.0.tar.xz
cd /home/soft/gcc/gmp-6.3.0
./configure --prefix=/usr/local/gmp-6.3.0 --build=x86_64-linux
make -j8
make install -j8
3.2 MPFR
cd /home/soft/gcc
tar -xvf mpfr-4.2.1.tar.xz
cd /home/soft/gcc/mpfr-4.2.1
./configure --prefix=/usr/local/mpfr-4.2.1 --with-gmp-include=/usr/local/gmp-6.3.0/include --with-gmp-lib=/usr/local/gmp-6.3.0/lib
make -j8
make install -j8
3.3 MPC
cd /home/soft/gcc
tar -xvf mpc-1.3.1.tar.gz
cd /home/soft/gcc/mpc-1.3.1
./configure --prefix=/usr/local/mpc-1.3.1 --with-gmp-include=/usr/local/gmp-6.3.0/include --with-gmp-lib=/usr/local/gmp-6.3.0/lib --with-mpfr-include=/usr/local/mpfr-4.2.1/include --with-mpfr-lib=/usr/local/mpfr-4.2.1/lib
make -j8
make install -j8
3.4 ISL
cd /home/soft/gcc
tar -jxvf isl-0.24.tar.bz2
cd /home/soft/gcc/isl-0.24
./configure --prefix=/usr/local/isl-0.24 --with-gmp-prefix=/usr/local/gmp-6.3.0
make -j8
make install -j8
四、 GCC10.5.0版本
安装gcc之前,需将前面安装的依赖库路径配置到环境变量中,否则会提示找不到相关依赖库
export LD_LIBRARY_PATH=/usr/local/gmp-6.3.0/lib:/usr/local/mpfr-4.2.1/lib:/usr/local/mpc-1.3.1/lib:/usr/local/isl-0.24/lib:$LD_LIBRARY_PATH
cd /home/soft/gcc
tar -xvf gcc-10.5.0.tar.xz
cd /home/soft/gcc/gcc-10.5.0
./configure --prefix=/usr/local/gcc-10.5.0 --with-gmp=/usr/local/gmp-6.3.0/ --with-mpfr=/usr/local/mpfr-4.2.1 --with-mpc=/usr/local/mpc-1.3.1 --with-isl=/usr/local/isl-0.24 --disable-multilib --enable-checking=release --enable-languages=c,c++
make -j8
make install -j8
配置环境变量
echo >> /etc/profile <<EOF
export PATH=/usr/local/gcc-10.5.0/bin:$PATH
EOF
source /etc/profile
更新动态库
不更新动态库,会导致编译成功的新程序,运行时报错。
原因是因为升级GCC后相应的动态库没有更新,导致新编译器编译程序成功,运行不成功
# 先删除/usr/lib64/libstdc++.so.6,再重新创建软链接
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/local/gcc-10.5.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
# 更新gcc、g++链接。首先备份gcc4.8.5
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
# 创建gcc-10.5.0链接
ln -s /usr/local/gcc-10.5.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-10.5.0/bin/g++ /usr/bin/g++
检查版本
[root@localhost gcc-10.5.0]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-10.5.0/libexec/gcc/x86_64-pc-linux-gnu/10.5.0/lto-wrapper
目标:x86_64-pc-linux-gnu
配置为:./configure --prefix=/usr/local/gcc-10.5.0 --with-gmp=/usr/local/gmp-6.3.0/ --with-mpfr=/usr/local/mpfr-4.2.1 --with-mpc=/usr/local/mpc-1.3.1 --with-isl=/usr/local/isl-0.24 --disable-multilib --enable-checking=release --enable-languages=c,c++
线程模型:posix
Supported LTO compression algorithms: zlib
gcc 版本 10.5.0 (GCC)