SUSE 11 SP3 编译更新GCC & 编译安装sysstat

由于需要编译安装 sysstat ,但是 SUSE 11 SP3 本身自带的 gcc 版本是 4.0.3,没办法直接编译,需要升级 gcc 版本。
报错如下:
gcc -std=gnu99 -o sadc.o -c -g -O2 -Wall -Wstrict-prototypes -pipe -O2 -fno-tree-slp-vectorize -DSA_DIR="/var/log/sa" -DSADC_PATH="/usr/local/lib64/sa/sadc" -DHAVE_SYS_SYSMACROS_H -DHAVE_LINUX_SCHED_H -DHAVE_SYS_PARAM_H sadc.c
cc1: error: unrecognized command line option "-fno-tree-slp-vectorize"所以我们需要先源码编译更新 gcc 版本,然后在编译安装 sysstat。
本次打算从 gcc4.0.3 升级到 gcc5.5.0
尝试过直接升级 gcc10.1.0,但是会报错缺少文件,所以暂定升级到 gcc5.5.0

准备安装介质
| 文件名 | 地址 | 备注 |
|---|---|---|
| gcc-5.5.0.tar.gz | https://ftp.gnu.org/gnu/gcc/ | |
| mpfr-2.4.2 | https://gcc.gnu.org/pub/gcc/infrastructure/ | gcc 依赖 |
| gmp-4.3.2 | https://gcc.gnu.org/pub/gcc/infrastructure/ | gcc 依赖 |
| mpc-0.8.1 | https://gcc.gnu.org/pub/gcc/infrastructure/ | gcc 依赖 |
新建一个文件夹存放安装介质
mkdir /gccupdate && cd /gccupdate
解压 GCC
tar -zvxf gcc-5.5.0.tar.gz -C /usr/local/ && ls -la /usr/local/
当前版本 GCC 需要哪些依赖可以通过以下命令进行查看
vim /usr/local/gcc-5.5.0/contrib/download_prerequisites
解压依赖 并创建软链接
把下载的三个依赖都解压到刚刚 GCC 的解压目录/usr/local/gcc-5.5.0
gmp-4.3.2.tar.bz2
tar -jxvf gmp-4.3.2.tar.bz2 -C /usr/local/gcc-5.5.0
---------------
mpc-0.8.1.tar.gz
tar -zxvf mpc-0.8.1.tar.gz -C /usr/local/gcc-5.5.0
---------------
mpfr-2.4.2.tar.bz2
tar -jxvf mpfr-2.4.2.tar.bz2 -C /usr/local/gcc-5.5.0进入/usr/local/gcc-5.5.0 执行以下命令
ln -sf gmp-4.3.2 gmp
ln -sf mpc-0.8.1 mpc
ln -sf mpfr-2.4.2 mpfr检查创建是否成功
ls -l | grep ^l
编译并安装 GCC
在目录gcc-10.1.0下面依次执行下面两个命令:
mkdir build && cd build
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib然后在build目录下面执行的命令,编译安装gcc(make -jx 根据核心数 x=核心数,但是根据自己环境性能来决定):
make -j4 && make install
没啥意外就完成了。
更新 GCC
原来的gcc命令位于目录/usr/bin/gcc等目录下面,为了不覆盖原来的命令。将原来的相关内容进行备份处理,执行如下命令:
mv /usr/bin/gcc /usr/bin/gcc403
mv /usr/bin/g++ /usr/bin/g++403
mv /usr/bin/c++ /usr/bin/c++403
mv /usr/bin/cc /usr/bin/cc403
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak安装的gcc新版本位于/usr/local/bin目录下面,需要为新版本gcc创建软链接:
ln -s /usr/local/bin/gcc /usr/bin/gcc
ln -s /usr/local/bin/g++ /usr/bin/g++
ln -s /usr/local/bin/c++ /usr/bin/c++
ln -s /usr/local/bin/gcc /usr/bin/cc
ln -s /usr/local/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6输入gcc -v查看版本:
gcc -v
编译安装 sysstat
就正常三板斧 configure、make、make install。
需要注意 configure 的时候需要添加参数才能手机 sa 历史监控信息
./configure --enable-install-cron
make
make install