使用源碼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 <iostream>
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;
}








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章