1. c++11&14怎么编译
学习c++11的时候,我的redhat虚拟机上的g++才是4.1.2版本,而g++4.7版本才开始支持c++11的,所以要使用c++11,首先需要将我们的g++编译器升级到4.7或者以上版本,这里我选择的是GCC的 7.1.0版本。
注意:大意义上来讲,GCC是一个编译器集合,拿到源代码后编译出来各种编译器,如果我们选择编译c,c++的编译器,就会生成gcc和g++。这里的gcc是专门正对于c代码的编译器,g++则是专门针对于c++代码的编译器,gcc和g++最显著的区别是g++会调用-lstdc++库,gcc不会。
1.1 g++升级
1.1.1 下载gcc
wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-7.1.0.tar.bz2
tar -jxvf gcc-7.1.0.tar.bz2
1.1.2 下载编译gcc时需使用的依赖项
cd gcc-7.1.0
./contrib/download_prerequisites //这个脚本会自动下载依赖项,但耗时很长,先去吃饭了
1.1.3 生成makefile文件及编译安装
建立一个单独的目录用于存放编译生成文件
mkdir gcc-build-7.1.0
cd gcc-build-7.1.0
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j4
make install
此时使用g++ --version,就可以看到版本已经是7.1.0了。
1.2 c++11编译
一般的,我们要编译c++11,都要使用g++ -std=c++11,但据我测试,7.1.0的版本已经默认支持c++11和c++14了,所以就不用再写明-std=c++11的选项了,可以直接使用g++编译c++11或者c++14的代码啦,当然如果想知道某个特性到底是属于c++11还是c++14,就可以使用-std=c++11和-std=c++14来辨别。
更多c++系列文章,请关注我的公众号:晟夏的叶。