Ubuntu下GCC的安裝以及版本控制


在Ubuntu下安裝GCC和其他一些Linux系統有點不一樣。

方法一:

該方法超簡單:
sudo apt-get  build-depgcc

就上面這條命令就可以搞定

方法二:
sudo apt-get  install  build-essential

還是簡單,一句命令也可以搞定

安裝完了可以執行
gcc--version

的命令來查看版本,輸出如下:

gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)
Copyright(C)2007FreeSoftwareFoundation,Inc.
方法三:

1.下載GCC源碼

  wget ftp://mirrors.kernel.org/gnu/gcc/gcc-4.9.0/gcc-4.9.0.tar.gz

2.解壓:

  tar -zxvf gcc-4.9.0.tar.gz

3.下載編譯所需依賴項:

  cd gcc-4.9.0                    //進入解包后的gcc文件夾

  ./contrib/download_prerequisites                   //下載依賴項

  cd ..                           //返回上層目錄

4.建立編譯輸出目錄:

  mkdir gcc-build-4.9.0

5.進入輸出目錄,執行以下命令,並生成makefile文件:

  cd gcc-build-4.9.0

  ../gcc-4.9.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

6.編譯:

  make -j4

接下來就是等待了,整個過程大約40分鍾左右。PS:最好不要在編譯過程中再去做別的什么事,整個過程CPU都是滿載的,要是莫名終止了,后面麻煩事也不少。

7.安裝:

編譯結束以后,我們就可以執行安裝了:

  make install

8.檢查版本:

  gcc --version
  或gcc -v


編譯則使用gcc命令。要往下學習首先就得熟悉gcc命令的用法。

gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到后面再慢慢學習其它選項,免得因選項太多而打擊了學習的信心。

一. 常用編譯命令選項
假設源程序文件名為test.c。

1. 無選項編譯鏈接
用法:#gcc test.c
作用:將test.c預處理、匯編、編譯並鏈接形成可執行文件。這里未指定輸出文件,默認輸出為a.out。

2. 選項 -o
用法:#gcc test.c -o test
作用:將test.c預處理、匯編、編譯並鏈接形成可執行文件test。-o選項用來指定輸出文件的文件名。

3. 選項 -E
用法:#gcc -E test.c -o test.i
作用:將test.c預處理輸出test.i文件。

4. 選項 -S
用法:#gcc -S test.i
作用:將預處理輸出文件test.i匯編成test.s文件。

5. 選項 -c
用法:#gcc -c test.s
作用:將匯編輸出文件test.s編譯輸出test.o文件。

6. 無選項鏈接
用法:#gcc test.o -o test
作用:將編譯輸出文件test.o鏈接成最終可執行文件test。

7. 選項-O
用法:#gcc -O1 test.c -o test
作用:使用編譯優化級別1編譯程序。級別為1~3,級別越大優化效果越好,但編譯時間越長。

二. 多源文件的編譯方法

如果有多個源文件,基本上有兩種編譯方法:
[假設有兩個源文件為test.c和testfun.c]

1. 多個文件一起編譯
用法:#gcc testfun.c test.c -o test
作用:將testfun.c和test.c分別編譯后鏈接成test可執行文件。

2. 分別編譯各個源文件,之后對編譯后輸出的目標文件鏈接。

用法:
#gcc -c testfun.c //將testfun.c編譯成testfun.o
#gcc -c test.c //將test.c編譯成test.o
#gcc -o testfun.o test.o -o test //將testfun.o和test.o鏈接成test

以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。

 

如果你在前后裝了兩個或者以上版本,有時候gcc -v/-version 會反饋舊的版本。下面將實現gcc各個版本間的選擇:

方法是通過設置各個版本的優先級來達到gcc版本的選擇;對於要選擇使用的版本,可以將它的優先級設置高些;對於不想使用的版本,賦值一個小的優先級號。這樣即可實現各個版本間的切換了。具體操作如下:

ubuntu系統使用的gcc版本隨着發布版本的不同而不同,在編譯android系統時不同的版本推薦用不同的gcc去編譯,那么可不可以改變系統的gcc來適應android編譯環境的需求呢?答案是可以的。

        先看看我們系統用的gcc和g++是什么版本

 

1 gcc -v

        可以獲得的信息如下

 

1 gcc version 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)

 

        如果我們想使用gcc4.5怎么辦?首先看看有沒有安裝gcc4.5,

 

1 ls /usr/bin/gcc*
        結果只有/usr/bin/gcc  /usr/bin/gcc-4.4兩個,那么我們需要安裝

 

 

1 sudo apt-get install gcc-4.5 gcc-4.5-multilib g++-4.5 g++-4.5-multilib
        安裝好后輸入以下指令:

 

 

1 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
2 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 40
        接着輸入:

 

 

1 sudo update-alternatives --config gcc
        會看到如下的選項

 

 

01 有 3 個候選項可用於替換 gcc (提供 /usr/bin/gcc)。
02  
03   選擇       路徑            優先級  狀態
04 ------------------------------------------------------------
05 * 0            /usr/bin/gcc-4.4   50        自動模式
06   1            /usr/bin/gcc-4.4   50        手動模式
07   2            /usr/bin/gcc-4.5   40        手動模式
08   3            /usr/bin/gcc-4.6   30        手動模式
09  
10 要維持當前值[*]請按回車鍵,或者鍵入選擇的編號:
        要想用哪個gcc就輸入編號吧。

 

        同樣也要設置一下g++的

 

1 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 50
2 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 40

 

        如果想刪除可選項的話可以鍵入以下指令:

 

1 sudo update-alternatives --remove gcc /usr/bin/gcc-4.5
        再用gcc -v 來看一下版本是否改變了。

又一個設置gcc版本切換的文章

1、手動切換

設置后,使用時需手動進行切換選擇。

root@ubuntu:~# ls /usr/bin/gcc* -l
lrwxrwxrwx 1 root root 21 Sep 18 04:42 /usr/bin/gcc -> /etc/alternatives/gcc
-rwxr-xr-x 1 root root 224544 Apr 15 22:58 /usr/bin/gcc-4.4
-rwxr-xr-x 1 root root 306200 Apr 15 19:45 /usr/bin/gcc-4.6
root@ubuntu:~#update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
root@ubuntu:~#update-alternatives --install /usr/bin/g++ gcc /usr/bin/g++-4.4 50

選擇方法(根據編譯器選擇其一):

root@ubuntu:~#update-alternatives --config gcc
root@ubuntu:~#update-alternatives --config g++

參考選擇界面:

root@ubuntu:~# update-alternatives --config g++
There are 2 choices for the alternative g++ (providing /usr/bin/g++).

  Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/g++-4.4   100       auto mode
  1            /usr/bin/g++-4.4   100       manual mode
  2            /usr/bin/g++-4.6   50        manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/g++-4.6 to provide /usr/bin/g++ (g++) in manual mode.
root@ubuntu:~# 

2、設置優先級自動

設置后,系統自動根據優先級選擇,假設要設置gcc4.4優先於gcc4.6,設置方法如下:

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM