使用CentOS 7 系统自带编译器4.8.5,编译一个项目,项目的有一个编译选项是-std=c++14,报错:
no member named 'make_unique' in namespace 'std'
根据GCC 4.9 Release Series — Changes, New Features, and Fixes- GNU Project 可以知道,到gcc的4.9版本之后才支持-std=c++1y选项。
查找gcc的版本,当前已经到了8.2.0版本了,果断直接升级到8.2.0。升级过程可以参考:
第一步,到Index of /gnu/gcc,选择要下载的版本。这里以8.2.0为例
wget http://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz
第二步,选择一个路径解压:tar -xvf gcc-8.2.0.tar.xz
第三步, 进入解压的路径:cd gcc-8.2.0 下载gcc的依赖
./contrib/download_prerequisites
第四步,编译
在 gcc-8.2.0 路径下,执行命令:mkdir build && cd build
然后执行:../configure --prefix=/disk4/gcc/gcc-8.2.0
最后,执行 make -j4 进行编译
第五步,安装
make install
第六步,设置环境变量
将当前安装的版本设置为默认的编译器:
vim ~/.bash_profile
export PATH=/disk4/gcc8/gcc-8.2.0/bin:$PATH
因为需要使用新版本的头文件和库,所以,需要将新版本的头文件和库的路径添加到环境变量:
export C_INCLUDE_PATH=/disk4/gcc8/gcc-8.2.0/include
export LD_LIBRARY_PATH=/disk4/gcc8/gcc-8.2.0/lib:/disk4/gcc8/gcc-8.2.0/lib64
保存退出后,再执行 source ~/.bash_profile
第七步,确认环境变量设置成功
执行 export | grep PATH, 看第六步设置的环境变量是否生效。
然后执行 gcc -v,查看当前使用的gcc的版本。
再次编译项目,成功!!!