這幾天在配置交叉編譯ARM開發板的linux內核的過程中碰到了很多問題,其中包括了GCC版本太高等問題,由此我打算安裝其他老的版本給我的Ubuntu16.04.實驗過程如下:
官網的教程是最牛逼的,先看看官網的安裝教程吧:https://gcc.gnu.org/install/
1、首先查看一下當前我的Ubuntu16.04版本的原裝GCC版本:
gcc -v #查看gcc的版本
g++ -v #查看g++的版本
如上圖所示:GCC的版本是5.4.0(這對我編譯某些很早的內核文件的確是太新了)
2、安裝目前需要GCC和G++的版本(目前安裝的是gcc-4.8.5版本):
在這之前,我嘗試采用下載源文件編譯安裝的方法,碰到了太多的問題,先記錄於此,后面再解決吧,先使用apt-get的安裝方法:
sudo apt-get install gcc-4.8 g++-4.8
我已經安裝好了,顯示如圖。
你在安裝完之后可以采用下面的指令來查看當前系統中安裝的所有的gcc和g++的版本:
ls /usr/bin/gcc*
ls /usr/bin/g++*
3、將某個版本加入gcc候選中,最后的數字是優先級,我自己是直接設為100(測試沒有問題),指令如下:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
同樣的我們也將原來系統中的gcc和g++的優先級改成100,這樣我們就能在選擇完當前使用版本之后不會恢復默認優先級的版本。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100
4、完成上面的操作之后,我們就可以通過下面的指令來選擇不同的gcc和g++的版本了,(注意使用之前確保至少有兩個gcc或者g++的版本進行了第3步的操作):
sudo update-alternatives --config gcc
這里我們選擇了2,也就是gcc-4.8的版本,接下來查看當前的版本是否已經切換過來了。
gcc -v
這樣表示確實切換過來了。
我們可以使用同樣的方法來選擇g++:
OK,我們都切換過來了,cheers!。
注意一個問題:
當切換使用了其他版本的gcc時,請務必保持g++的版本和gcc版本的一致性,否則用cmake配置出來的項目遇到c++代碼還是會用之前版本的gcc。
關於直接編譯安裝gcc的教程可以參看這里(雖然我還沒成功):http://blog.csdn.net/ws_20100/article/details/51207372
關於上面的gcc的切換和安裝也可以參考這里:http://www.linuxidc.com/Linux/2017-03/142299.htm
后續問題解決:
由於不能很好的使用source源文件來安裝gcc,那我們就想辦法安裝:采用.deb文件來安裝
1、先下載rpm的安裝文件。
wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic//gcc3.4-3.4.5-alt17.x86_64.rpm
2、將rpm文件轉換成ubuntu能夠識別的deb文件。
下載轉換安裝文件的軟件alien:
sudo apt-get install alien
3、轉換rpm到deb文件(在同一目錄下生成了deb文件)。
sudo alien gcc3.4-3.4.5-alt17.x86_64.rpm
4、使用指令安裝deb軟件包。
sudo dpkg -i gcc3.4_3.4.5-1_amd64.deb
5、查看當前所有的gcc版本。
ls /usr/bin/gcc*
最后安裝好了們就用之前的命令來設置gcc的優先級,並切換不同的gcc的版本啦~
參考reference:
gcc專用rpm文件下載地址:https://pkgs.org/
rpm轉deb文件:http://blog.csdn.net/cd520yy/article/details/10475843
ubuntu 安裝gcc-3.4.6:http://aizhu.2008beijing.blog.163.com/blog/static/5845702120121194563260/
完~