CentOS 6.x安裝多GCC版本號,cmake的安裝與使用


操作系統:CentOS release 6.5 (Final)

當前gcc版本號:build=x86_64-redhat-linux
                          Thread model: posix
                          gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)

待安裝gcc版本號:gcc-4.8.5.tar.gz

編譯新版本號的gcc之前,必須確保系統中已經安裝了低版本號的gcc編譯器。


【注】:編譯gcc前。可能須要安裝的lib文件libstdc++-devel.i686 / libstdc++-devel.x86_64

                在gcc編譯階段。可能的配置參數../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++--disable-multilib

                假設不帶--disable-multilib選項,則編譯就會生成32bit和64bit的版本號。即多平台交叉編譯,這里就須要對應的libstdc++-devel.i686 / libstdc++-devel.x86_64


1> 獲取gcc-4.8.5安裝包,並解壓:



2> 編譯前,自己主動下載所需的依賴庫。

【注】:查看該文件可知,主要是下載gmp-4.3.2、mpc-0.8.1、mpfr-2.4.2三個包。並解壓。建立軟件連接。

                假設用戶不能正常使用wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2來獲取包:

                1)考慮 使用curl命令curl -O ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 

                2)查找國內鏡像源,ftp地址更改之


3>不須要手動去編譯2>中下載安裝的三個包

參考之前達人安裝編譯過程,多會有提到,在正式編譯gcc-4.8.x之前,須要手動去編譯以上的三個依賴。

但實測,在新版本號的gcc中。不須要我們去手動編譯這些東西,僅僅須要保證三個文件夾的軟鏈存在即可。

設置軟鏈。就不用去指定--with-mpc、--with-mpfr、--with-gmp三個路徑。



4> 生成編譯時的配置文件

【注】:gcc-build-4.8.5是我新建立的,用來編譯gcc的文件夾,編譯gcc是不能在gcc-4.8.5的根文件夾下進行的。必須要新建一個文件夾來。


5>使用make工具編譯


【注】:make -j 4聲明要採用多核來生成make文檔,加快編譯速度。假設是單核用戶,那還是算了,老實。make吧。


6> 更新系統默認的gcc版本號


說明(從最后一個參數說起):

101:版本號優先級,值越大,就越先啟用

/usr/local/bin/gcc:新的gcc文件文件夾,以上的編譯操作默認,會在路徑/usr/local下生成對應的庫文件和運行文件等。

gcc:系統調用時,在命令行中的名字,也就是路徑的一個別名吧。

/usr/bin/gcc:之前版本號gcc調用時的路徑。

完畢配置以后。能夠看到以下的相似結果:


假設想要,切換回舊版本號。請參考update-alternatives --config命令。

然后。運行updatedb。更新系統文件信息,並退出當前session。又一次連接session:


啊,最終編譯好了,好緊張的說!

!!!



7> 更新gcc-4.8.5的庫文件

提示更新*.so依賴文件之前,編譯cmake時,遇到的錯誤例如以下:


提示我們,盡管gcc是新版本號的。可是檢測到對應的依賴庫還是舊本版的,路徑/usr/lib64/libstdc++.so.6。以下定位問題


面有兩個路徑存在libstdc++.so.6,意識到應該是系統如今默認作用的庫還是之前舊版本號的,安全起見,這里我為舊版本號的so文件做了備份。

有兩種方法處理這個問題:

1) 建立軟鏈接(推薦):

ln -sb /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6

最終結果:


2) 備份/usr/lib64/下的libstdc++.so.6和libstdc++.so.6.0.13,拷貝/usr/local/lib64/libstdc++.so.6、libstdc++.so.6.0.19/usr/lib64文件夾下


編譯cmake-3.5

1>自己主動配置編譯文檔



2>編譯



3>查看信息



4>編譯實例projectApache Arrow

cmakeproject時,指定特定的gcc、g++版本號!!

。!

!!!

WTF?

為什么cmake一個project默認調用的編譯器還是舊版本號的。而不是新安裝的gcc-4.8.5。


盡管糾結了半天,懷疑是不是之前的gcc編譯過程有問題。可是細致確認后,肯定了是cmake本身的問題。

故參考https://cmake.org/Wiki/CMake_FAQ#Method_3_.28avoid.29:_use_set.28.29,設置對應的cmake編譯選項。

cmake -D CMAKE_C_COMPILER=/usr/local/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/bin/g++

指定新版本號GCC的路徑。編譯成功。


總結:

至此,本人所需的一切工作環境均已經搭建完畢,希望本人的一些痛苦經歷不要再重現,畢竟,工作時間是寶貴的。

:)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM