close

一、目前為止C++11還沒有一個已經編譯好可以直接裝起來用的版本,因此必須自行去下載然後編譯出來給自己使用,編譯是基於原生g++,所以第一件事就是安裝gcc/gcc-c++ Complier

# yum install gcc gcc-c++

 

二、到http://mirror.hust.edu.cn/gnu/gcc下載想安裝的版本,C++11要gcc 4.8以上版本才有包含進去,這邊就下載4.9.2並解壓縮

# wget -c http://mirror.hust.edu.cn/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
# tar xvf gcc-4.9.2.tar.gz

 

三、下載編譯所需的套件mpc, gmp, mpfr

# cd gcc-4.9.2
# ./contrib/download_prerequisites

比較新的gcc版本會自動建立mpc, gmp, mpfr連結到實際版本的資料夾如mpc-0.8.1, gmp-4.3.2, mpfr-2.4.2,但較舊版本需自行搬動資料夾或建立連結,總之最後編譯前mpc,gmp,mpfr資料夾必須存在

 

四、產生makefile

# ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

 

五、編譯gcc版本並安裝,非常久,建議去睡覺或做別的事吧....

# make -j4      //編譯gcc
# make install  //安裝到系統lib 

 

在第一步沒安裝gcc/gcc-c++的話會在編譯過程發生這個錯誤

configure: error: C++ compiler missing or inoperational
make[2]: \*** [configure-stage1-libcpp] Error 1    
...
...
make: \*** [all] Error 2

 

六、隨便使用C++11的語法寫點什麼測試

#include <iostream>
#include <string>

using namespace std;

int main()
{
   string str("zxjclxrwr");
   for(auto c : str)
   {
      cout<<c<<endl;
   }
}

 

編譯的時候必須註明使用C++11的語法,否則編譯器會告訴你它不認得"auto"與":"這些新的syntax

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

 

這時就可以正式產出執行檔並執行,但沒意外的話執行時會跳出

 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found

 

這是因為系統的動態函示庫還不知道你已經升級了gcc,make install並不會去主動替換這一部分,所以這時可以先檢查一下自己的GLIBCXX版本狀況

# strings /usr/lib64/libstdc++.so.6 | grep GLIBC

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

 

很明顯我的環境沒有執行程式所需的GLIBCXX_3.4.14

這時回到下載編譯的gcc資料夾內的x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/ libstdc++.so.6.0.xx,將它複製到/usr/lib64底下,並重新將libstdc++.so.6鏈結到這個最新的版本

# cp x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/ libstdc++.so.6.0.xx /usr/lib64/
# cd /usr/lib64
# rm libstdc++.so.6
# ln -s libstdc++.so.6.0.xx libstdc++.so.6

 

應該可以順利執行剛剛編譯出來的執行檔了。

 

下一篇:

[C/C++] Linux(centos)下安裝C++11與Boost函式庫(二)

 

arrow
arrow
    文章標籤
    c++11 boost centos
    全站熱搜

    不來嗯 發表在 痞客邦 留言(0) 人氣()