最近在用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+.
需要将上步骤中,下载的依赖包删除,之后重新执行下
执行编译命令,时间比较长,采用多线程 -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
评论已关闭