Saturday, November 30, 2013

C++11のためにGCCの最新版をインストールする

 
 最近The C++ Programming Language (4th Edition)を読んでいます.
これは最新のC++11に準拠した権威ある(分厚い)解説書です.
C++はちょとたしなむ程度でしたが,これを気に真面目に勉強してみようと思います.

 勉強のためにUbuntu上でC++11の開発を行えるよう環境設定をしましたので,その工程をまとめておきます.
想定している環境は以下のようになります.

OS
Ubuntu 12.04 LTS 32bit

GCC
4.8.1

参考にしたサイト
UbuntuHandbook


1.GCCとG++のバージョン確認


まずは現在の自分の環境を確認します.
・現在のGCCとG++のバージョンを確認します.
$ gcc --version
$ g++ --version 
 
私の環境では,以下のようになりました.
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

バージョンごとのC++11に対するサポートは以下のサイトをごらんください.
C++0x/C++11 Support in GCC

今回は4.8をインストールします.

2. GCCとG++のインストール


 update-alternativesを使用して元のGCCと最新のGCCを共存させます.

・Personal Package Archive(PPA)の追加します.
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test

・GCC 4.8とG++ 4.8をインストールします.
$ sudo apt-get update; sudo apt-get install gcc-4.8 g++-4.8

・GCC 4.8とG++ 4.8をupdate-alternativesに優先度20で登録します.
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20 

・元のGCC(4.X)をupdate-alternativesに優先度10で登録します.
ここでXは自分の環境に合わせて変更してください.
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.X 10
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.X 10
・GCC 4.8とG++4.8が使用できるか確認します.
$ gcc --version
$ g++ --version

GCC4.8系列が表示されれば成功です.
gcc (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1
g++ (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1


3. 元のGCCにバージョンを戻す方法


 元のGCC/G++のバージョンに戻す方法を説明します.
これは,2章でGCC 4.8がバージョンに表示されない場合にも有効です.

・configから使用するGCCを選択し,変更する.

$ sudo update-alternatives --config gcc
$ sudo update-alternatives --config g++

selectionの番号を入力しEnterキーを押せば,使用するGCCを変更できます.


GCCのConfig





 
G++のConfig











4. サンプルを作成する


 開発環境が無事に準備できたか確認するために,適当なコードをコンパイルしてみましょう.

・test.cppを作成します.
適当なエディタ(emacsやgeditなど)で以下のコードを入力してください.

#include <iostream> 
#include <vector> 

int main() 
{
     int array[] {1, 2, 3, 4, 5};
     std::vector vec;

     for (int& i : array)
     {
         vec.push_back(i);
     }

     for (auto itr = vec.begin(); itr != vec.end(); ++itr)
     {
         std::cout << *itr << std::endl;
     }

     return 0;
}

・test.cppをコンパイルします.

$ g++ -std=c++11 test.cpp -o test

もし,G++4.6以下を使用しているのであれば,以下のコマンドでコンパイルしてください.

$ g++ -std=c++0x test.cpp -o test

無事にコンパイルでき,以下のようにコンソールに表示されれば成功です.

test.cppの実行結果







以上で,C++11の開発環境の設定は終わりとなります.

No comments:

Post a Comment