哈囉大家好,這裡是覺得更新gcc超麻煩的小編過路君子
開始編譯之後小編就去睡覺了,所以實際上花了多久,小編也不知道,忘了下 time 參數。
詳細的設定參數,小編參考了這篇:樹莓派 Raspberry Pi 自行編譯與安裝 GCC 6 編譯器教學 by G. T. Wang。
好像每種系統所要使用的參數都不一樣,如果下錯或是沒下,就會在編譯的時候報錯,就算所有的安裝包都安裝了也是一樣。
首先,我們先隨便到一個鏡站把原始碼下載到我們的伺服器裡,鏡站的位置 gcc 官方網站都有,那小編本人是在 https://ftp.gnu.org/gnu/gcc/ 這個鏡站下載的。
截至小編撰文的當下,最新的 gcc 版本是 11.2,那小編在這裡以安裝 10.2 為例。
(所有圖片點擊都可以放大、變高清)
那當小編當初一拿到樹梅派時,順手就下了 apt update 和 apt upgrade,所以小編的樹梅派的 gcc 版本為 gcc 8.3.0。
g++ 的版本跟 gcc 一樣,這邊就不另外列出了。
然後下載 gcc 的原始碼並解壓縮。
wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz tar Jxvf gcc-10.2.0.tar.xz
等待解壓縮完成之後切換至資料夾內。
cd gcc-10.2.0/
第一步就是先下載依賴檔。
./contrib/download_prerequisites
接下來就是最重要的一步了,因為小編平時在使用的 Linux 系統是 CentOS 8,所以在這邊踢到滿大的鐵板,直接拿 CentOS 的設定就死了。
那這邊是參考 G. T. Wang 在文章中所給出的設定,小編使用 raspberry pi 4 也能成功編譯。
編譯完成之後記得確認下圖是否出現了 Makefile 這個檔案,那小編看有些人會另外創建資料夾來放置 configure 的檔案,小編個人認為不需要,除非各位需要傳送此檔案到其他伺服器上編譯。
./configure -v \ --enable-languages=c,c++ \ --with-cpu=cortex-a53 \ --with-fpu=neon-fp-armv8 \ --with-float=hard \ --build=arm-linux-gnueabihf \ --host=arm-linux-gnueabihf \ --target=arm-linux-gnueabihf \ --prefix=/usr/local/gcc-10.2.0
既然小編的主力是 CentOS,那小編在這裡就順手附上 CentOS 的設定方式:
./configure \ --disable-multilib \ --enable-languages=c,c++ \ --prefix=/usr/local/gcc-10.2.0
差別挺大的,這就是為什麼小編會踢到鐵板。
然後接著連下兩條指令,這個過程大概要五個小時,建議是用 && 連接,然後就放著去睡覺,早上起床之後一定會好。
make -j 4 make install
當編譯並且安裝完成之後,相關的執行檔會放在 /usr/local/gcc-10.2.0/bin/ 下。
快速的連下五道指令快速設定全域 gcc,如果覺得沒必要下這麼多,也可以只下前兩條指令即可。
ln -fs /usr/local/gcc-10.2.0/bin/gcc /bin/gcc ln -fs /usr/local/gcc-10.2.0/bin/g++ /bin/g++ ln -fs /usr/local/gcc-10.2.0/bin/gcc-ar /bin/gcc-ar ln -fs /usr/local/gcc-10.2.0/bin/gcc-nm /bin/gcc-nm ln -fs /usr/local/gcc-10.2.0/bin/gcc-ranlib /bin/gcc-ranlib
然後再確認一次目前的 gcc 版本。
成功!恭喜各位擁有了自己的高版本 gcc 編譯器囉~
其實樹梅派預設的 gcc 8.3.0 已經非常夠用了,要不要更新終究見仁見智,最新版本的軟體不一定最好。
後記
為什麼小編會選擇 gcc 10.2.0 來安裝呢?因為......