yum groupinstall "development tools"
yum install glibc-static libstdc++-static
tar -xvf gcc-5.4.0.tar.bz2
cd gcc-5.4.0
./contrib/download_prerequisits
mkdir build
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make(建議不要使用make -j來編譯,雖然可以縮短編譯時間,但極大可能會編譯失敗)
make install
init 6
重起後就可以通過gcc -v
來檢視gcc版本,現在已經是5.4.0了,所以我決定寫乙個小程式來測試一下,編譯程式沒有問題,但是執行的時候出現"./a.out: /lib64/libstdc++.so.6:version 'glibcxx_3.4.21' not found(required by ./a.out)",所以接下來需要解決這個問題。
這是因為公升級gcc時,生成的動態庫沒有替換老版本gcc的動態庫導致的,將gcc最新版本的動態庫替換系統中老版本的動態庫即可解決,執行以下命令檢查動態庫:
strings /lib64/libstdc++.so.6 | grep glibc
cp /usr/local/lib64/libstdc++.so.6.0.21 /lib64
cd /lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.21 libstdc++.so.6
然後你可以執行以下命令來檢視'glibcxx_3.4.21'已經可以找到了:
strings /lib64/libstdc++.so.6 | grep glibc
解決了這個問題終於可以執行程式了,然後又測試了-g
選項來編譯程式,編譯好程式除錯程式時並不能夠設定斷點以及print變數的值,gdb除錯**現:missing separate debuginfos, use: debuginfo-install glibc-2.17-106.e17_2.6.x86_4 libgcc-4.8.5-4.e17.x86_64的問題,通過上網查閱資料,是因為gcc版本和gdb版本並不匹配,或者說gdb版本過低,我的gdb版本是7.6.1,是2023年的,現在最新的是7.11.1,所以我決定直接公升級到最新版本。
tar -xvf gdb-7.11.1.tar.gz
cd gdb-7.11.1
./configure
make
make install
整個編譯過程持續15分鐘左右,當執行make install
時gdb安裝出現了錯誤:warning: 'makeinfo' is missing on your sysem,則需安裝相關依賴程式:
yum install texinfo libncurses5-dev
依賴安裝完成後重新執行make install
就可以了,然後重新啟動電腦:
init 6
重起後就可以通過gdb -v
來檢視gdb版本,現在已經是7.11.1了,但是當除錯程式時出現下面資訊時:
warning: file "/usr/local/lib64/libstdc++.so.6.0.21-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
to enable execution of this file add
add-auto-load-safe-path /usr/local/lib64/libstdc++.so.6.0.21-gdb.py
line to your configuration file "/root/.gdbinit".
to completely disable this security protection add
set auto-load safe-path /
line to your configuration file "/root/.gdbinit".
將以下資訊放入~/.gdbinit
就可以了:
add-auto-load-safe-path /usr/local/lib64/libstdc++.so.6.0.21-gdb.py
set auto-load safe-path /
若想通過gdb來除錯stl容器,則還需要做一些配置,可以通過gdb python pretty printers
來解決這個問題:
svn checkout svn: stlprettyprinter
mv stlprettyprinter /usr/local
然後將下面的配置資訊放入~/.gdbinit
:
python
import sys
sys.path.insert(0, '/usr/local/stlprettyprinter')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (none)
end
更多有關gdb python pretty printers
的資訊可以點選這裡。 centos7編譯安裝gcc
centos7 的yum 只能將 gcc公升級到 4.9 的版本 但是從gcc官網看 已經到 7.2 的版本了,因為想自己編譯乙個最新版的linux核心,所以對gcc要求有點高,於是自己動手編譯gcc。gcc v 檢視原來的版本 直接來乾貨 1 需要明白的 2 明白.configure 後面的引數配...
CentOs 7 下編譯安裝Gcc 7 1 0
依賴yum install gcc gcc c xz y 外掛程式安裝 wget tar xvf gmp 6.1.2.tar.xz cd gmp 6.1.2 configure make check make make install wget xz d mpfr 3.1.5.tar.xz tar ...
CentOS7離線安裝GCC
離線環境需要rpm安裝gcc,記錄下安裝過程 所需檔案 cpp 4.8.2 16 el7.x86 64.rpm gcc 4.8.2 16 el7.x86 64.rpm glibc 2.17 55 el7.x86 64.rpm glibc common 2.17 55 el7.x86 64.rpm g...