1. 程式人生 > >CentOS6.5 下安裝QT5.8

CentOS6.5 下安裝QT5.8

因為公司用的是CentOS6.5這個Linux版的執行環境,最近有一個新專案可能用到最新版QT5.8版本,所以嘗試在這個版本的Linux下安裝,但是安裝過程中出現錯誤,所以百度各種錯誤,排錯。

可能是CentOS 的版本有點低,沒法直接安裝QT5.8,所以需要升級GCC G++ 和 glibc的版本。gcc編輯器升級到6.1.0 ,glibc升級到2.14

那麼在安裝QT5.8之前首先要安裝Gcc編輯器

一、升級gcc和g++的版本:

1、安裝GCC編譯器:

  yum -y install gcc gcc-c++

2、安裝連結器:
  yum -y install mesa-libGL-devel mesa-libGLU-devel freeglut-devel

3、下面開始下載GCC的安裝包:
  獲取安裝包並解壓

  wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2
  tar -jxvf gcc-6.1.0.tar.bz2

 當然,http://ftp.gnu.org/gnu/gcc  裡面有所有的gcc版本供下載,最新版本已經有6.1.0啦.
 建議下載.bz2的壓縮包,檔案更小,下載時間更少.

4、下載供編譯需求的依賴項

  參考文獻[1]中說:這個神奇的指令碼檔案會幫我們下載、配置、安裝依賴庫,可以節約我們大量的時間和精力。
  cd gcc-6.1.0
  ./contrib/download_prerequisites

5、 建立一個目錄供編譯出的檔案存放
  mkdir gcc-build-6.1.0
  cd gcc-build-6.1.0

6、 生成Makefile檔案
  ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

7、 編譯

 make -j4

 -j4選項是make對多核處理器的優化,如果不成功請使用 make,相關優化選項可以移步至參考文獻[2]。
 (注意:此步驟非常耗時,我虛擬機器耗時近3小時; 實體機近80分鐘,CPU基本是滿的,記憶體也使用不少)

8、 安裝
 make install
 (安裝需要root許可權!)

 檢視安裝
 ls /usr/local/bin | grep gcc

 輸出如下:
 gcc
 gcc-ar
 gcc-nm
 gcc-ranlib
 x86_64-pc-linux-gnu-gcc
 x86_64-pc-linux-gnu-gcc-6.3.0   //就是這個
 x86_64-pc-linux-gnu-gcc-ar
 x86_64-pc-linux-gnu-gcc-nm
 x86_64-pc-linux-gnu-gcc-ranlib

執行升級命令:

/usr/sbin/update-alternatives --install  /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc-6.3.0

驗證安裝:

執行以下命令檢視gcc版本:
gcc -v

執行以下命令檢視g++版本:
g++ -v

9、升級gcc,生成的動態庫沒有替換老版本gcc的動態庫

原始碼編譯升級安裝了gcc後,編譯程式或執行其它程式時,有時會出現類似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的問題。這是因為升級gcc時,生成的動態庫沒有替換老版本gcc的動態庫導致的,將gcc最新版本的動態庫替換系統中老版本的動態庫即可解決。


9.1 執行以下命令檢查動態庫:

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

從輸出可以看出,gcc的動態庫還是舊版本的。說明出現這些問題,是因為升級gcc時,生成的動態庫沒有替換老版本gcc的動態庫。


9.2 執行以下命令,查詢編譯gcc時生成的最新動態庫:

find / -name "libstdc++.so*"

將上面的最新動態庫libstdc++.so.6.0.22複製到/usr/lib64目錄下

cd /usr/lib64

cp /root/Downloads/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++- v3/src/.libs/libstdc++.so.6.0.22 ./

9.3 刪除原來軟連線:                                                   

rm -rf libstdc++.so.6

9.4 將預設庫的軟連線指向最新動態庫:

ln -s libstdc++.so.6.0.22 libstdc++.so.6

9.5 預設動態庫升級完成。重新執行以下命令檢查動態庫:

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

可以看到 輸出有"GLIBCXX_3.4.22" 了

至此g++已經升級完成,接下來就是升級glibc

二、升級glibc的版本:

glibc下載和安裝:

檢視系統glibc庫版本可使用如下命令:
$ strings /lib64/libc.so.6 |grep GLIBC_

首先, 點選此處下載glibc點選下載, 得到glibc-2.14.tar.gz使用如下命令解壓glibc-2.14.tar.gz:

(下載地址:http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz)

$ tar -xzvf glibc-2.14.tar.gz
當前目錄下得到目錄glibc-2.14, 執行$cd glibc-2.14命令進入目錄, 依次執行如下命令編譯安裝glibc-2.14:

$ mkdir build// 在glibc-2.14目錄下建立build資料夾
$ cd build// 進入build目錄
$ ../configure --prefix=/opt/glibc-2.14 // 配置glibc並設定當前glibc-2.14安裝目錄
$ make -j4// 編譯安裝glibc-2.14庫

$ make install

glibc軟鏈:

*******************

這一步很重要,必須先進入root使用者,因為後續的刪除操作可能造成系統命令不可用,而又需要進入root使用者,所以不許先進入,再進行操作。否則可能造成系統崩潰

*******************
安裝完成後, 建立軟鏈指向glibc-2.14, 執行如下命令:

$su //進入root使用者

$ rm -rf /lib64/libc.so.6 // 先刪除先前的libc.so.6軟鏈
$ ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6


注意:

刪除libc.so.6之後可能導致系統命令不可用的情況, 可使用如下方法解決:

$ LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so  ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6


如果上述更新失敗可使用如下命令還原:

$ LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6    // libc-2.12.so 此項是系統升級前的版本

現在GCC G++ 和GLIBC都升級完成,可以進行安裝QT5.8了

——————————————————————————————————

參考1:http://www.cnblogs.com/lzpong/p/5755678.html

參考2:http://blog.chinaunix.net/uid-14735472-id-5546560.html

參考3:http://cnodejs.org/topic/56dc21f1502596633dc2c3dc

——————————————————————————————————