網(wǎng)站首頁 編程語言 正文
目錄
- 一、GCC編譯器概念
- 二、GCC支持的文件類型
- 三、GCC編譯過程
- (一)預編譯
- (二)編譯
- (三)匯編
- (四)連接
一、GCC編譯器概念
- GCC編譯器是GNU編譯器的套件,它是Linux操作系統(tǒng)中最常用的編譯器之一,是用于編程開發(fā)的編譯器,并支持多種編程語言,例如支持c/c++語言,還有java、go語言等等。
二、GCC支持的文件類型
GCC支持的常見文件類型有以下:
擴展名 | 說明 |
---|---|
.c | C源程序 |
.C/.cc | C++源程序 |
.a | 庫文件 |
.h | 頭文件 |
.i | 經(jīng)過預處理的C程序 |
.ii | 經(jīng)過預處理的C++程序 |
.o | 編譯后的目標程序 |
三、GCC編譯過程
(一)預編譯
首先GCC編譯器通過預編譯,讀取源程序,對頭文件、預編譯語句和一些特殊符號進行分析和處理,可以通過在gcc
命令后跟參數(shù)-E
,即可完成對代碼的預編譯
,如下預編譯一個名稱為hello.c的C源程序:
gcc -E hello.c //預編譯
hello.c文件內(nèi)容如下:
#include
int main(){
printf("Hello Linux!\n");
return 0;
}
執(zhí)行命令后:
[yyx@localhost ~]$ vi hello.c
[yyx@localhost ~]$ gcc -E hello.c
將預編譯的結(jié)果保存在hello.i文件中,可以在后跟參數(shù)-o
,確定輸出文件的名稱,執(zhí)行以下命令:
gcc -E hello.c -o hello.i
(二)編譯
編譯的作用是檢查代碼的語法和將無誤的預編譯后的文件轉(zhuǎn)換為匯編語言,并自動一個生成擴展名為.s
的文件,即可完成對代碼的編譯
,如下編譯一個名稱為hello.c的C源程序,后跟參數(shù)-S
,表示進行編譯但不匯編,生成匯編代碼:
gcc -S hello.c
在Linux終端輸入命令:
(三)匯編
匯編
是將匯編代碼轉(zhuǎn)為目標代碼,其參數(shù)是-c
,它會自動生成一個擴展名為.o
的目標程序,即只編譯匯編,而不連接生成可執(zhí)行文件,如下:
gcc -c hello.c
(四)連接
連接
的功能是連接目標代碼,并生成可執(zhí)行文件,也是通過gcc命令,通過對hello.o或hello.c文件都可以進行連接,后跟參數(shù)-o,從而確定可執(zhí)行文件的名稱,如下:
gcc hello.c -o hello
執(zhí)行下列命令:
[yyx@localhost ~]$ gcc hello.c -o hello
[yyx@localhost ~]$ ./hello
在Linux終端輸入命令,得到程序的執(zhí)行結(jié)果:
原文鏈接:https://blog.csdn.net/qq_43085848/article/details/124694735
相關(guān)推薦
- 2022-08-07 C++從文件中提取英文單詞的實現(xiàn)方法_C 語言
- 2022-11-14 C#中的委托、事件與接口
- 2022-09-22 uni ui 、color ui 圖標icon的使用
- 2022-12-10 jquery異常問題Uncaught?TypeError:?$(...).on?is?not?a?f
- 2022-03-20 C++?Qt繪制時鐘界面_C 語言
- 2022-08-20 windows系統(tǒng)安裝配置nginx環(huán)境_nginx
- 2023-05-22 Pytorch中TensorDataset,DataLoader的聯(lián)合使用方式_python
- 2022-10-11 ingress-nginx-url重寫的經(jīng)驗總結(jié)
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支