網站首頁 編程語言 正文
目錄
- 一、GCC編譯器概念
- 二、GCC支持的文件類型
- 三、GCC編譯過程
- (一)預編譯
- (二)編譯
- (三)匯編
- (四)連接
一、GCC編譯器概念
- GCC編譯器是GNU編譯器的套件,它是Linux操作系統中最常用的編譯器之一,是用于編程開發的編譯器,并支持多種編程語言,例如支持c/c++語言,還有java、go語言等等。
二、GCC支持的文件類型
GCC支持的常見文件類型有以下:
擴展名 | 說明 |
---|---|
.c | C源程序 |
.C/.cc | C++源程序 |
.a | 庫文件 |
.h | 頭文件 |
.i | 經過預處理的C程序 |
.ii | 經過預處理的C++程序 |
.o | 編譯后的目標程序 |
三、GCC編譯過程
(一)預編譯
首先GCC編譯器通過預編譯,讀取源程序,對頭文件、預編譯語句和一些特殊符號進行分析和處理,可以通過在gcc
命令后跟參數-E
,即可完成對代碼的預編譯
,如下預編譯一個名稱為hello.c的C源程序:
gcc -E hello.c //預編譯
hello.c文件內容如下:
#include
int main(){
printf("Hello Linux!\n");
return 0;
}
執行命令后:
[yyx@localhost ~]$ vi hello.c
[yyx@localhost ~]$ gcc -E hello.c
將預編譯的結果保存在hello.i文件中,可以在后跟參數-o
,確定輸出文件的名稱,執行以下命令:
gcc -E hello.c -o hello.i
(二)編譯
編譯的作用是檢查代碼的語法和將無誤的預編譯后的文件轉換為匯編語言,并自動一個生成擴展名為.s
的文件,即可完成對代碼的編譯
,如下編譯一個名稱為hello.c的C源程序,后跟參數-S
,表示進行編譯但不匯編,生成匯編代碼:
gcc -S hello.c
在Linux終端輸入命令:
(三)匯編
匯編
是將匯編代碼轉為目標代碼,其參數是-c
,它會自動生成一個擴展名為.o
的目標程序,即只編譯匯編,而不連接生成可執行文件,如下:
gcc -c hello.c
(四)連接
連接
的功能是連接目標代碼,并生成可執行文件,也是通過gcc命令,通過對hello.o或hello.c文件都可以進行連接,后跟參數-o,從而確定可執行文件的名稱,如下:
gcc hello.c -o hello
執行下列命令:
[yyx@localhost ~]$ gcc hello.c -o hello
[yyx@localhost ~]$ ./hello
在Linux終端輸入命令,得到程序的執行結果:
原文鏈接:https://blog.csdn.net/qq_43085848/article/details/124694735
相關推薦
- 2022-03-28 深入理解numpy中argmax的具體使用_python
- 2022-05-10 一次性解決:IDEA的 maven 配置問題,在新項目中不再擔心 maven 的配置問題
- 2022-06-06 解決Unity無限滾動復用列表的問題_C#教程
- 2022-08-15 Dubbo3基礎配置安裝及整合Springboot
- 2021-12-15 Linux下Makefile的編寫與使用詳解_Linux
- 2022-12-04 Nginx?禁止直接訪問目錄或文件的操作方法_nginx
- 2022-03-30 py3nvml實現GPU相關信息讀取的案例分析_python
- 2023-04-02 python去除列表中的空值元素實戰技巧_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支