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

常用編輯器之GCC編譯器

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

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

1、GCC的安裝

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

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

也可以通過簡(jiǎn)單的命令安裝gcc:

elf@ubuntu:~$ sudo apt install gcc

2、GCC的編譯選項(xiàng)

GCC的基本用法是:gcc [選項(xiàng)] 文件名

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

3、GCC的基本使用

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

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

測(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,我們?cè)诮K端運(yùn)行./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ù)處理:主要實(shí)現(xiàn)將頭文件展開,宏定義替換以及解析條件編譯到文件中;

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

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

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

我們可以通過一個(gè)簡(jiǎn)單的hello.c程序的編譯過程對(duì)GCC的整個(gè)編譯過程有一個(gè)簡(jiǎn)單的了解。

1)預(yù)處理

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

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

2)編譯

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

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

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

3)匯編

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

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

4)鏈接

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
TLP293-4(V4-GB,E 1 Toshiba America Electronic Components TRANSISTOR OUTPUT OPTOCOUPLER
$1.36 查看
TLMG1100-GS08 1 Vishay Intertechnologies LED Uni-Color Green 572nm 2-Pin SMD T/R

ECAD模型

下載ECAD模型
$0.41 查看
74HC14D,653 1 Nexperia 74HC14; 74HCT14 - Hex inverting Schmitt trigger@en-us SOIC 14-Pin

ECAD模型

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

飛凌嵌入式

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

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

查看更多

相關(guān)推薦