在deepin23上編譯gcc13.2
deepin20素以軟體版本過老被人詬病,換成最新的deepin23之後情況大有好轉,但是gcc版本為11.2,鄙人對此仍有意見,所以特意研究瞭如何編譯一份較新的gcc來用。
1.下載原始碼包
http://mirrors.ustc.edu.cn/gnu/gcc/
我相關在中科大映象站下載東西,選擇13.2版本的壓縮包
解壓
2.準備環境
系統需要安裝 gcc 和 g++,構建工具make
對應的庫:gmp 、mpc 、mpfr
介紹一下這幾個庫:
GMP 是一個免費的任意精度算術庫,對有符號整數、有理數和浮點數進行運算。
MPFR:GNU多精度浮點舍入庫。
MPC是一個複雜數字演演算法的c語言庫,支援任意精度和數字。
安裝這三個庫的方法:
- 在解壓出來的專案目錄下執行
./contrib/download_prerequisites
會自動下載安裝這三個庫的壓縮包。當然這需要聯網。(推薦) - 用apt 安裝這幾個庫:libgmp-dev 、libmpc-dev 、libmpfr-dev (不保證一定可行)
3.執行configure檔案
sudo ./configure --prefix=/usr/local/gcc13.1.0/ --disable-multilib
--prefix=/usr/local/gcc13.1.0/ 設定編譯後檔案的安裝目錄
--disable-multilib 禁止交叉編譯(反正我用不到)
4.編譯和安裝
sudo make -jn
n是編譯用到的執行緒數,按照自己的cpu情況決定
sudo make install
將編譯好的檔案安裝到指定目錄下
5.替換掉原來的gcc或g++
將/usr/bin目錄下的gcc和g++軟連線指向自己編譯出來的gcc和個g++
例如:
sudo ln -sf /usr/local/gcc13.1.0/bin/gcc /usr/bin/gcc
sudo ln -sf /usr/local/gcc13.1.0/bin/g++ /usr/bin/g++
要替換g++的話,還需要替換libstdc++.so.6的軟連線
以deepin23為例:libstdc++.so.6在/lib/x86_64-linux-gnu目錄下
以我的過程為例:用來替換的libstdc++.so.6.0.32在/usr/local/gcc13.2.0/lib64/目錄下