no member named 'make_unique' in namespace 'std'

使用CentOS 7 系统自带编译器4.8.5,编译一个项目,项目的有一个编译选项是-std=c++14,报错:

no member named 'make_unique' in namespace 'std'

根据https://gcc.gnu.org/gcc-4.9/changes.html 可以知道,到gcc的4.9版本之后才支持-std=c++1y选项。

查找gcc的版本,当前已经到了8.2.0版本了,果断直接升级到8.2.0。升级过程可以参考:

第一步,到http://ftp.gnu.org/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的版本。

再次编译项目,成功!!!

发布了85 篇原创文章 · 获赞 9 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/jimmyleeee/article/details/83855662