昨天裝完Matlab以後,DPM compile報錯,下方錯的意思是需要支持c++11的g++。但是CentOS6 的默認gcc版本是4.4.7,支持c++11的版本是4.8.0以上(這裡不太確定)?所以這裡就需要手動更新GCC了。
Building with 'g++'.Error using mexcc1plus: error: unrecognized command line option "-std=c++11"
在這裡,穩妥起見,選擇了4.8.5,如果需要別的版本,改掉版本號就好了,可以去GCC官網查看
$ wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz
編譯安裝 GCC 需要依賴mpc,mpfr,gmp
包。好在 GCC 源碼裡自帶腳本可以輕松下載依賴包。
$ tar zxf gcc-4.8.5.tar.gz$ cd gcc-4.8.5$ ./contrib/download_prerequisites
在此腳本裡可以看到依賴包的版本號依次是mpc-0.8.1,mpfr-2.4.2,gmp-4.3.2
。
$ cd .. //這樣做的原因主要是要在源代碼外建立build文件夾$ mkdir gcc-build-4.8.5$ mkdir /usr/local/gcc-4.8.5 //放置的是 include 文件。$ mkdir /usr/local/gcc //放置的是 bin + lib 文件$ cd gcc-build-4.8.5$ ../gcc-4.8.5/configure --prefix=/usr/local/gcc-4.8.5 --exec-prefix=/usr/local/gcc --enable-languages=c,c++ //為了節省時間,這裡只編譯c和c++的$ make && make install
為了避免安裝後系統裡出現多個版本的 GCC,這裡直接將編譯安裝的目錄指定為/usr/local/gcc-4.8.5
和/usr/local/gcc
下,如果不指定–prefix
,則會默認安裝到/usr/local
下。
make以後,漫長的等待,搞定
將 gcc/g++改名,留存舊版本
$ mv /usr/bin/gcc /usr/bin/gcc-4.4.7$ mv /usr/bin/g++ /usr/bin/g++-4.4.7
$ export PATH=/usr/local/gcc/bin:$PATH # 使用最新的 gcc/g++;
確認版本號
$ g++ --version$ gcc --version$ which g++$ which gcc
compilation terminated.make[5]: *** [_muldi3.o] Error 1make[5]: Leaving directory `/home/wei/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/32/libgcc'…………
解決方法:安裝 32 位的 glibc-devel,後面的參數是忽略某個軟件的多版本問題。
$ yum -y install glibc-devel.i686 --setopt=protected_multilib=false
這個錯主要原因是新建的build文件夾在源代碼樹裡,需要在另外獨立的文件夾使用。 解決方法是:在源代碼外新建了文件夾,解決後的代碼已經更新到上面了。
First, wehighlyrecommend that GCC be built into a separate directory from the sources whichdoes not reside within the source tree. This is how we generally build GCC; building where srcdir == objdir should still work, but doesn’t get extensive testing; building where objdir is a subdirectory of srcdir is unsupported.
1、在CentOS下編譯安裝GCC 2、Installing GCC: Configuration
http://xxxxxx/Linuxjc/1134379.html TechArticle