記錄一次gcc的編譯

lzh發表於2023-10-05

在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語言庫,支援任意精度和數字。

安裝這三個庫的方法:

  1. 在解壓出來的專案目錄下執行./contrib/download_prerequisites 會自動下載安裝這三個庫的壓縮包。當然這需要聯網。(推薦)
  2. 用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/目錄下

相關文章