使用源码gcc-4.8.2安装c++编译器C++11

0、【尝试c++11】

最近去新华书店,无意中看到了一本书《c++ primer(第五版)》,里面主要讲了c++11的一些特性。上网查了下,c++11是2011年定稿的,我2015年才知道,惭愧!于是,我上jd把这本书买了下来,研究之,发现需要C++11编译器才能验证c++11特性。于是我开始着手在我的ubuntu12.04下安装c++11编译器,gcc-4.8.2.下面是安装和配置步骤,及遇到的一些问题。


1、【下载源码包】   
在c++群里,网友告诉我他安装c++11编译器成功!我让他把gcc源码包发给我,他说他删掉了,然我自己下。我告诉他自己遇到困难了,并截图给他看,找不源码
       包。最后他说了一句话,用wget命令下载:wget http://gcc.parentingamerica.com/releases/gcc-4.8.2 其中他告诉我有个release目录,点进去才能才能看到所有源码包。          (wget命令太慢,我获取地址后用迅雷下的)

2、【配置,编译gcc-4.8.2源码包】
源码包下下来了,我又遇到问题了,不知道如何编译。这次群里的网友不在,只能硬着头皮上了。对于大部分的源码安装,基本步骤是这样的:
> ./configure
> make 
> make install

但是这个gcc-4.8.2的源码包似乎有点不一样。对于./configure虽然可以通过,但是在源码包的根目录下却没有Makefile,执行make命令老是提示“make: *** 没有
       指明目标并且找不到 makefile。 停止”。于是,我又上网搜索发现需要额为配置。现在改进后总结如下:
> ./contrib/download_prerequisites                    #网友说,这个脚本会自动寻找依耐
> make gcc-build-4.8.2
> cd gcc-build-4.8.2
> ../configure –enable-checking=release –enable-languages=c,c++       #会在产生Makefile
> make (这个make,我执行了大概2个小时左右。网友建议不要断电,或者中间给退出了,后果很严重。我没试过后果)
> make install 

3、 【验证C++11编译器是不是安装好了】
> gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.8.2/lto-wrapper
目标:i686-pc-linux-gnu
配置为:../configure
线程模型:posix
gcc 版本 4.8.2 (GCC)

4、【用代码测试是否安装了c++11】
编译的时候,发生了一点小插曲。就是平时我编译c程序的时候,有时会加上-std=c99.于是,这里我想当然的这样执行> g++ demo.cpp -std=c11.然后出现如下错误:
cc1plus: 警告:command line option ‘-std=c11’ is valid for C/ObjC but not for C++ [默认启用]”。最后,我在一个外国网站上看到,大神说要加上"-std=c++11".我照做,            最终通过!
> g++ demo.cpp -std=c++11

> ./a.out


//测试代码
#include 
using namespace std;


int main(int argc, char *argv[])
{
	string s("hello world");

	auto ps = s;        //c++11的特性,自动变量
	cout << "ps = " << ps << endl;
	
	char *p = nullptr;  //c++的特性,空指针
	cout << "p = " << p << endl;

	return 0;
}








你可能感兴趣的:(后端)