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
代码语言:javascript复制
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时需使用的依赖项
代码语言:javascript复制
cd gcc-7.1.0
./contrib/download_prerequisites //这个脚本会自动下载依赖项,但耗时很长,先去吃饭了
1.1.3 生成makefile文件及编译安装
建立一个单独的目录用于存放编译生成文件
代码语言:javascript复制
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 系列文章,请关注我的公众号:晟夏的叶。