在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* |
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 |
要維持當前值[*]請按回車鍵,或者鍵入選擇的編號: |
一樣也要設置一下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 |
設置後,使用時需手動進行切換選擇。
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