加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 1、GCC的安裝
    • 2、GCC的編譯選項(xiàng)
    • 3、GCC的基本使用
    • 4、GCC編譯過(guò)程
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

常用編輯器之GCC編譯器

08/24 07:08
525
閱讀需 5 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

GCC(GNU Compiler Collection)是由GNU開(kāi)發(fā)的編程語(yǔ)言編譯器,最初是作為GNU操作系統(tǒng)的編譯器編寫(xiě)的。GCC是一個(gè)編譯器套件,包含很多軟件包,支持多種語(yǔ)言編譯。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

也可以通過(guò)簡(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í)語(yǔ)言的經(jīng)典的hello.c的編譯為例,對(duì)gcc的基本用法做一個(gè)了解。已編譯hello.c文件為例。創(chuàng)建測(cè)試?yán)搪窂?home/elf/work/example/hello,在該路徑下進(jìn)行hello.c文件的編寫(xiě)、編譯和運(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文件夾下,通過(guò)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編譯過(guò)程

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

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

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

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

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

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

1)預(yù)處理

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

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

2)編譯

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

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

通過(guò)vim hello.s命令可以看到文件中都是匯編語(yǔ)句。

3)匯編

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

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

4)鏈接

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠(chǎng)商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AFBR-5803ATZ 1 Foxconn Transceiver, 1270nm Min, 1380nm Max, 125Mbps(Tx), 125Mbps(Rx), ST Connector, Through Hole Mount, ROHS COMPLIANT, SIP-9
$205.36 查看
TJA1043TK/1Y 1 NXP Semiconductors TJA1043 - High-speed CAN transceiver SON 14-Pin

ECAD模型

下載ECAD模型
$1.96 查看
TJA1021T/10/C,118 1 NXP Semiconductors TJA1021 - LIN 2.1/SAE J2602 transceiver SOIC 8-Pin

ECAD模型

下載ECAD模型
$1.44 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜