• 正文
    • 1、GCC的安裝
    • 2、GCC的編譯選項
    • 3、GCC的基本使用
    • 4、GCC編譯過程
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

常用編輯器之GCC編譯器

2024/08/24
1623
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

GCC(GNU Compiler Collection)是由GNU開發(fā)的編程語言編譯器,最初是作為GNU操作系統(tǒng)的編譯器編寫的。GCC是一個編譯器套件,包含很多軟件包,支持多種語言編譯。GCC的官網(wǎng)是http://gcc.gnu.org

1、GCC的安裝

Ubuntu默認(rèn)安裝了GCC,但軟件包可能不全,為了確保有一個基本完善的本地編譯環(huán)境,可安裝build-essential軟件包。在確保Linux能聯(lián)網(wǎng)的情況下,在終端輸入如下安裝命令:

elf@ubuntu:~$ sudo apt-get install build-essential

也可以通過簡單的命令安裝gcc:

elf@ubuntu:~$ sudo apt install gcc

2、GCC的編譯選項

GCC的基本用法是:gcc [選項] 文件名

GCC有很多編譯控制選項,使得GCC可以根據(jù)不同的參數(shù)進(jìn)行不同的編譯處理,我們簡單介紹一些常用的基本控制選項。

3、GCC的基本使用

我們現(xiàn)在以我們學(xué)習(xí)語言的經(jīng)典的hello.c的編譯為例,對gcc的基本用法做一個了解。已編譯hello.c文件為例。創(chuàng)建測試?yán)搪窂?home/elf/work/example/hello,在該路徑下進(jìn)行hello.c文件的編寫、編譯和運行。

elf@ubuntu:~/work/example/hello$ vim hello.c

測試?yán)虄?nèi)容如下:

#include<stdio.h>

int main(void)

{

printf("Hello World!n");

return 0;

}

用cd命令切換到hello文件夾下,通過gcc命令編譯hello.c文件:

elf@ubuntu:~/work/example/hello$ gcc hello.c -o hello_ubuntu

可以看到,hello.c文件被編譯成功,生成可執(zhí)行文件hello_ubuntu,我們在終端運行./hello_ubuntu,可以看到輸出結(jié)果和我們程序的要求一致。如果編譯命令不添加-o hello_ubuntu,則編譯完成生成的是a.out可執(zhí)行文件,輸出結(jié)果是一樣的。

elf@ubuntu:~/work/example/hello$ gcc hello.c

4、GCC編譯過程

GCC編譯器的編譯過程要經(jīng)過預(yù)處理,編譯,匯編,鏈接等4步才能夠生成可執(zhí)行文件。

預(yù)處理:主要實現(xiàn)將頭文件展開,宏定義替換以及解析條件編譯到文件中;

編譯:將預(yù)處理的代碼編譯轉(zhuǎn)換為匯編語言;

匯編:將匯編語言翻譯成二進(jìn)制文件;

鏈接:將匯編出來的多個二進(jìn)制目標(biāo)文件和庫文件進(jìn)行鏈接,生成可執(zhí)行文件。

我們可以通過一個簡單的hello.c程序的編譯過程對GCC的整個編譯過程有一個簡單的了解。

1)預(yù)處理

elf@ubuntu:~/work/example/hello$ gcc -E hello.c -o hello.i

我們使用vim hello.i命令可以看到預(yù)處理文件有將近800行,預(yù)處理過程將一個不到10行的代碼,生成了一個將近800行的預(yù)處理文件。

2)編譯

這個過程是將hello.i預(yù)處理文件編譯成hello.s文件。

elf@ubuntu:~/work/example/hello$ gcc -S hello.i

通過vim hello.s命令可以看到文件中都是匯編語句。

3)匯編

在終端輸入gcc –c hello.s將匯編語句生成機器碼,得到hello.o文件。

elf@ubuntu:~/work/example/hello$ gcc -c hello.s

4)鏈接

機器碼不能夠直接運行,我們通過鏈接得到可執(zhí)行文件hello。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
AFBR-2624Z 1 Foxconn Receiver, 630nm Min, 685nm Max, Through Hole Mount, ROHS COMPLIANT, PLASTIC, PACKAGE-8
$18.85 查看
25LC512T-I/SN 1 Microchip Technology Inc 64K X 8 SPI BUS SERIAL EEPROM, PDSO8, 3.90 MM, ROHS COMPLIANT, PLASTIC, SOIC-8

ECAD模型

下載ECAD模型
$1.79 查看
HFBR-1531Z 1 Broadcom Limited Transmitter, Through Hole Mount, ROHS COMPLIANT PACKAGE

ECAD模型

下載ECAD模型
$17.74 查看
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦