最近在用centos编译openwrt,发现安装依赖的生活,make和gcc版本太低,需要手动升级

1、依赖版本低

Build dependency: Please install GNU make v4.1 or later. Build
dependency: Please install the GNU C Compiler (gcc) 6 or later Build
dependency: Please install the GNU C++ Compiler (g++) 6 or later

我的系统gnu为3.8,yum升级不到4.1,要手动升级

wget https://ftp.gnu.org/gnu/make/make-4.4.tar.gz 
tar xvf make-4.4.tar.gz 
cd make-4.4/ 
./configure  
make 
sudo make install

安装完毕可以把旧版卸载了,然后链接到新版本

yum remove make
ln -s /usr/local/bin/make /usr/bin/
make --version

更新gcc

wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz
tar xvf gcc-12.2.0.tar.gz
mkdir gcc-build-12.2.0
cd gcc-12.2.0

配置文件

./contrib/download_prerequisites
cd ..

生产make文件

cd gcc-build-12.2.0
../gcc-12.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

如果提示错误,configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
需要将上步骤中,下载的依赖包删除,之后重新执行下
1yHfFmTbwmNjQTVV.png
1yHfFmU5H84NFFJ2.png
执行编译命令,时间比较长,采用多线程 -j4,也不要太大,建议和nohup &配合使用

nohup make -j4 &

安装

sudo make install

配置libstdc++.so
验证编译目录(gcc-build-12.2.0)下是否存在 libstdc++.so

find . -name "libstdc++.so*"

进入libstdc++.so配置目录

cd /usr/lib64

将新的libstdc++.so 拷贝到目录下

cp /root/gcc-build-12.2.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 .

备份

mv libstdc++.so.6 libstdc++.so.6.old

创建新软连

ln -sv libstdc++.so.6.0.28 libstdc++.so.6

配置环境变量
卸载老版本 4.8.5

yum remove gcc gcc-c++

进入根目录

cd ~

编辑当前用户环境变量

vim .bash_profile

内容

PATH=$PATH:$HOME/bin:/usr/local/bin/export CC=/usr/local/bin/gccexport CXX=/usr/local/bin/g++

立即生效

source ~/.bash_profile

验证

gcc --version

评论已关闭