雖然技術在進步,linux各發行版本已經更新迭代的很多了,目前centos、Redhat已經出到8了,Ubuntu已經到21.04了,但我相信一定有很多朋友跟我一樣因為各種各樣的問題還在使用老久的2.6內核系統,最經典的就是Redhat6.x,Centos6.x以及國產麒麟系統V3.2:
Redhat6.3系統
Centos6.8系統
舊版本系統gcc版本和glibc版本
雖說用起來沒問題,但是其有個共同的特點就是gcc版本只有4.4.7,glibc版本只有2.12。不支持c++11,無法使用我最愛的lumbda表達式以及c++11線程。雖然經過配置可以實現在舊gcc版本的系統上運行C++11配置的程序(類似windows移植拷貝相關dll到文件夾下),但是無法直接在舊系統上調試。所以本文教大家如何在這些系統上升級gcc版本到4.8.5,glibc升級到2.17,最終效果如圖:
Centos6.8升級gcc,glibc后的效果圖
升級方法:
首先檢查升級所需必備組件:
舊系統要有gcc g++ make pythn Python-devel openssl-devel,如果沒有大概率會影響升級gcc,缺啥裝啥,如果你是內網環境,請自行解決,這里僅提供在線安裝方式:
yum install -y gcc gcc-c++ make python python-devel openssl-devel
下載安裝包:
為了方便各位網友,我已經將支持c++11的gcc4.8.5 gdb7.6.1 glibc.2.17,以及(必備組件gmp4.3.2 mpc1.0.1 mpfr2.4.2 termcap1.3.1 texinfo5.0,這幾個包主要是防止在內網環境下缺包導致無法升級準備的)打包好了,地址在這:
鏈接:
https://pan.baidu.com/s/1xH23swWqjYF1guo3l1R24g
提取碼:bvoa
--來自百度網盤超級會員V5的分享
安裝方法:
- 首先安裝gmp mpc mpfr termcap texinfo,安裝方式一致:
解壓過后執行:
./configure -prefix=/usr&&make -j8&&make install
即可
全部安裝完成后開始執行:
echo "/usr/lib">> /etc/ld.so.conf;ldconfig
- 安裝gcc4.8.5:
./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib&&make -j8&&make install
漫長的等待后,安裝完成,驗證:
gcc -v
g++ -v
- 系統中添加libstdc++.so.6
找stage中的最新
cp stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19 /usr/lib64
復制后,修改系統默認動態庫的指向,即:重建默認庫的軟連接。
切換工作目錄至/usr/lib64:
cd /usr/lib64
將默認庫的軟鏈接指向最新動態庫:
ln -sf libstdc++.so.6.0.19 libstdc++.so.6;
ln -sf /usr/local/bin/gcc /usr/bin/gcc;
ln -sf /usr/local/bin/g++ /usr/bin/g++;
默認動態庫升級完成。重新運行以下命令檢查動態庫:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
此時gcc g++就升級完成了。但是如果此時進行c++11開發,你會發現報錯:
libc.so.6: version GLIBC_2.14 not found,這是因為沒有升級glibc。
- 升級glibc
話不多說直接上安裝方法:
tar zxvf glibc-2.17.tar.gz;
cd glibc-2.17;
mkdir build;
cd build;
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin && make -j8 && make install
查看安裝后的glibc版本:
# ldd --version
如果顯示2.17則說明成功。此時已經可以正常開發了,安裝個QT5.7試試,完全沒問題,這在沒升級之前你絕對是不可能安裝成功的:
升級gcc后安裝QT5.7
此時,貌似已經大功告成了,但作為一個有經驗的開發人員告訴你現在你還不能在QT中使用gdb調試,舊版本的gdb已經不能使用了,所以要升級gdb:
- 升級gdb
./configure --with-python='/usr/bin/python' && make -j8 &&make install
漫長的等待后完成
gdb --version查看新版本信息
最后記得要重做軟連接:
ln -sf /usr/local/bin/gdb /usr/bin/gdb
ln -sf /usr/local/bin/gdbserver /usr/bin/gdbserver
此時才是真的可以完美的用QT5.7進行C++11無論純C/C++程序開發還是QT控制臺/QT界面開發調試都沒有任何問題:
升級后進行QT5.7C++11開發
最終實現了在舊版本gcc系統中進行C++11開發。