1 参考资料
安装参考:https://blog.csdn.net/JeremyTsai/article/details/108457800
官网:http://www.linuxfromscratch.org/blfs/view/svn/general/gcc.html
2 系统环境
2.1 主机环境
操作系统:WIN 10
虚拟机软件:VMWare 15.0.0 build-1013445 Pro
2.2 虚拟机上操作系统环境
Centos 8.1.1911
执行如下命令查看:
cat /etc/redhat-release
3 配置阿里yum源
参考:https://developer.aliyun.com/mirror/centos
3.1 备份原配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
3.2 配置新源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
3.3 生成缓存
yum makecache
3.4 问题解决
非阿里云ECS用户会出现 Couldn’t resolve host ‘mirrors.cloud.aliyuncs.com’ 信息,不影响使用。用户也可自行修改相关配置: eg:
sed -i -e ‘/mirrors.cloud.aliyuncs.com/d’ -e ‘/mirrors.aliyuncs.com/d’ /etc/yum.repos.d/CentOS-Base.repo
4 准备工作
4.1 安装依赖
dnf install –enablerepo PowerTools gcc gcc-c++ glibc-static libstdc++-static make tar bzip2 -y
4.2 下载最新包
进入opt目录,创建gcc-src目录,并进入该目录,执行命令获取新包:
cd opt
mkdir gcc-src
cd gcc-src
curl -O https://mirror.tuna.tsinghua.edu.cn/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
4.3 解压
tar xf gcc-10.2.0.tar.gz
4.4 安装gcc依赖库
cd /opt/gcc-src/gcc-10.2.0
contrib/download_prerequisites
dnf install –enablerepo PowerTools texinfo -y
5 正式安装
5.1 建立编译目录
cd /opt/gcc-src
mkdir gcc-build
cd gcc-build
5.2 配置
../gcc-10.2.0/configure –enable-bootstrap –enable-languages=c,c++,fortran,lto –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –enable-shared –enable-threads=posix –enable-checking=release –disable-multilib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-gnu-unique-object –enable-linker-build-id –with-gcc-major-version-only –enable-initfini-array –enable-gnu-indirect-function –enable-cet
5.3 编译
我这是笔记本虚拟机上编译的。编译过程很长,这边耗时40分钟左右,且编译后文件很大,这边编译完文件夹大小6.7G,执行命令:
make -j8
5.4 安装
make install
5.5 验证
至此,gcc10.2.0已成功编译安装。查看gcc信息,指令:
gcc -v
5.6 测试编译
编译简单的 hello 程序
g++ -o hello hello.cpp
./hello
hello.cpp内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> using namespace std; int main() { cout<<“If you insert 1 ,I will print ‘Hello World!'”<<endl; bool flag; cin>>flag; if(flag) { cout<<“Hello World,”<<“I am C++ !!!”; } else { cout<<“Are you kidding me?”<<endl; } return 0; } |