深圳市寶安區(qū)怎么樣seo網(wǎng)站推廣的主要目的是什么
目錄
- 參考
- gcc概述
- gcc的工作流程
參考
gcc編譯器
gcc概述
編輯器vi、記事本)是指我用它來(lái)寫程序的 (編輯碼),而我們寫的代碼語(yǔ)句,電腦是不懂的,我們需要把它轉(zhuǎn)成電腦能懂的語(yǔ)句,編譯器就是這樣的轉(zhuǎn)化工具。就是說(shuō),我們用編輯器編寫程序,由編譯器編譯后才可以運(yùn)行!
編譯器是將易于編寫、閱讀和維護(hù)的高級(jí)計(jì)算機(jī)語(yǔ)言翻譯為計(jì)算機(jī)能解讀、運(yùn)行的低級(jí)機(jī)器語(yǔ)言的程序。
gcc (GNU Compiler Collection,GNU 編譯器套件是由 GNU 開(kāi)發(fā)的編程語(yǔ)言編譯器。gcc原本作為GNU操作系統(tǒng)的官方編譯器,現(xiàn)已被大多數(shù)類Unix操作系統(tǒng)(如linux、BSD、Mac等)采納為標(biāo)準(zhǔn)的編譯器同樣適用于微軟的Windows。
gcc最初用于編譯C語(yǔ)言,隨著項(xiàng)目的發(fā)展gcc已經(jīng)成為了能夠編譯C、C++、Java、Ada、fortran、Object C、ObjectC++、Go語(yǔ)言的編譯器大家族。
編譯命令格式:
gcc [options] file…
g++ [options] file…
- 命令、選項(xiàng)和源文件之間使用空格分隔
- 一行命令中可以有零個(gè)、一個(gè)或多個(gè)選項(xiàng)
- 文件名可以包含文件的絕對(duì)路徑,也可以使用相對(duì)路徑
- 如果命令不包含輸出可執(zhí)行文件的文件名,可執(zhí)行文件的文件名會(huì)自動(dòng)生成一個(gè)默認(rèn)名,Linux平臺(tái)為a.out,widnow平臺(tái)為a.exe
gcc是外部命令
gcc的工作流程
gcc編譯器從拿到一個(gè)c源文件到生成一個(gè)可執(zhí)行程序,中間一共經(jīng)歷了四個(gè)步驟:
四個(gè)步驟并不是gcc獨(dú)立完成的,而是在內(nèi)部調(diào)用其他工具,從而完成了整個(gè)工作流程:
# 1、進(jìn)行預(yù)處理
gcc -E hello.c -o hello.i
# 2、生成匯編文件
gcc -S hello.i -o hellp.s
# 3、生成目標(biāo)代碼
gcc -c hello.s -o hello.o
# 4、生成可執(zhí)行文件
gcc hello.o -o hello
# 5、執(zhí)行
./hello
也可以一步編譯完成
# 將源文件生成一個(gè)可執(zhí)行文件,等價(jià)于前面四步
gcc hello.c -o hello
# 執(zhí)行
./hello
選項(xiàng) | 作用 |
---|---|
-o file | 指定生成的輸出文件名為file |
-E | 只進(jìn)行預(yù)處理 |
-S(大寫) | 只進(jìn)行預(yù)處理和編譯 |
-c(小寫) | 只進(jìn)行預(yù)處理、編譯和匯編 |
-v/–version | 查看gcc版本號(hào) |
-g | 包含調(diào)試信息 |
-On n=0~3 | 編譯優(yōu)化,n越大優(yōu)化得越多 |
-Wall | 提示更多警告信息 |
-D | 編譯時(shí)定義宏 |
# 顯示所有的警告信息
gcc -Wall test.c
# 將警告信息當(dāng)做錯(cuò)誤處理
gcc -Wall -Werror test.c
-D定義宏用法
測(cè)試程序(-D選項(xiàng))
#include <stdio.h>1int main(void)
{printf("SIZE: %d n",SIZE);return 0;
}
執(zhí)行
deng@itcast:-/test$ gcc 2test.c -DSIZE=10
deng@itcast:-/test$ ./a.out
SIZE: 10