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.
方法三:php

1.下載GCC源碼
android

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

2.解壓:
c++

  tar -zxvf gcc-4.9.0.tar.gz

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

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

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

  cd ..                           //返回上層目錄

4.創建編譯輸出目錄:
ide

  mkdir gcc-build-4.9.0

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

  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.安裝:ui

編譯結束之後,咱們就能夠執行安裝了:
url

  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版本切換的文章

一、手動切換

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

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:~# 

二、設置優先級自動

設置後,系統自動根據優先級選擇,假設要設置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
相關文章
相關標籤/搜索