centos7 編譯安裝gcc 5 4 0

2022-09-13 09:30:15 字數 3092 閱讀 5368

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...