當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > gcc編譯器下載及安裝教程
Linux下變成的源碼要運(yùn)行,必須先轉(zhuǎn)成二進(jìn)制的機(jī)器碼。此時(shí)就需要編譯器,Linux系統(tǒng)下的Gcc(GNU C Compiler)是GNU推出的功能強(qiáng)大、性能優(yōu)越的多平臺編譯器,是GNU的代表作品之一。gcc是可以在多種硬體平臺上編譯出可執(zhí)行程序的超級編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%。
Gcc編譯器能將C、C++語言源程序通過編譯、連接成可執(zhí)行文件,如果沒有給出可執(zhí)行文件的名字,gcc將生成一個名為a.out的文件。
比如,下面這段源碼(文件名叫做test.c)。
#include<stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
編譯則使用gcc命令,gcc命令提供了非常多的命令選項(xiàng)。
一. 常用編譯命令選項(xiàng)
假設(shè)源程序文件名為test.c。
1. 無選項(xiàng)編譯鏈接
用法:#gcc test.c
作用:將test.c預(yù)處理、匯編、編譯并鏈接形成可執(zhí)行文件。這里未指定輸出文件,默認(rèn)輸出為a.out,如果需要執(zhí)行,內(nèi)核中必須支持該文件的格式,默認(rèn)一般都是elf可執(zhí)行程序
2. 選項(xiàng) -o
用法:#gcc test.c -o test
作用:將test.c預(yù)處理、匯編、編譯并鏈接形成可執(zhí)行文件test。-o選項(xiàng)用來指定輸出文件的文件名。
3. 選項(xiàng) -E
用法:#gcc -E test.c -o test.i
作用:將test.c預(yù)處理輸出test.i文件,預(yù)處理其實(shí)就是處理#預(yù)處理符號,比如#include, #define, #if, #ifdef, #error等
4. 選項(xiàng) -S
用法:#gcc -S test.i
作用:將預(yù)處理輸出文件test.i匯編成test.s文件。匯編語言對應(yīng)匯編指令,默認(rèn)gcc編譯成x86指令,如果需要編譯arm架構(gòu)的,就必須使用交叉工具鏈
5. 選項(xiàng) -c
用法:#gcc -c test.s
作用:將匯編輸出文件test.s編譯輸出test.o文件,二進(jìn)制文件就是101010機(jī)器碼
6. 無選項(xiàng)鏈接
用法:#gcc test.o -o test
作用:將編譯輸出文件test.o鏈接成終可執(zhí)行文件test。
如果需要修改Ubuntu的gcc版本,可以看一下你的Ubuntu安裝了哪些版本的gcc 用命令:ls /usr/bin/gcc* -l 顯示是
lrwxrwxrwx 1 root root 7 2017-08-14 15:17 /usr/bin/gcc -> gcc-4.6
-rwxr-xr-x 1 root root 302104 2017-09-17 05:43 /usr/bin/gcc-4.6
由上面顯示可以看出默認(rèn)安裝的是gcc-4.6,現(xiàn)在來改成gcc-4.7
$ sudo apt-get install gcc-4.7
$ sudo apt-get install g++-4.7
刪除gcc-4.6的軟連接文件/usr/bin/gcc。(只是刪除軟連接)
命令:sudo rm /usr/bin/gcc
然后建一個軟連接,指向gcc-4.7。
命令:sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
然后可以通過命令:gcc -v 查看版本