網站首頁 編程語言 正文
1.gcc的安裝(以Ubuntu為例) sudo apt-get install build-essential
安裝完后可以通過 gcc --version 查看版本。
讓我們在通過gcc編譯可執行文件的過程中掌握其基礎應用。
準備: 先在當前目錄下 使用vim新建一個.c文件 例如 666.c
$ vim 666.c
(vim的使用可在我的另一篇博客有詳細的敘述,這里不多在贅述)
插入一段代碼。
#include <stdio.h> main() { int a,i; a=6; for(i=0;i<3;i++) { printf("%d",a); } }
??
(每次我們用 cat 查看)
一.預處理
1.預處理通過對宏定義(像#define)進行展開,對頭文件(像 stdio.h)進行展開,對條件進行(像ifdef)編譯,展開所有宏,刪除所有注釋(像"http://").預處理cpp把源代碼,頭文件預編成一個.i文件。(注意這時并不檢查語法,所以即使有語法錯誤也不會報錯。)
? 2.命令:
$ gcc -E (源文件名) -o (預處理文件名)
或者:
$ gcc (源文件名) > (預處理文件名)
? 例如按666.c 來說,預處理時可以是 :
? gcc -E 666.c -o 666.i
? 也可以是 gcc 666.c > 666.i
二. 編譯
?? 1.編譯也就是檢查語法是否錯誤,將預處理過的文件編譯成匯編文件。
?? 2.命令:
$ gcc -S (源文件) -o (匯編文件)
? 例如 gcc -S 666.i -o 666.s
三.匯編
1. 匯編也就是將匯編文件生成目標文件(二進制文件)通過匯編,文本代碼變成了二進制代碼。(二進制代碼文件以.o為后綴名)。
2.命令:
$ gcc -c (匯編文件) -o (目標文件)
例如 gcc -c 666.s -o 666.o
(這時候因為是二進制文件了,所以會亂碼)
四.鏈接
1. 鏈接找到依賴的庫文件(靜態與動態),將目標文件鏈接為可執行程序。
$ gcc -c [目標文件] -o [可執行程序] -l[動態庫名]
假如沒有動態庫的話(一般)
直接
$ gcc -c [目標文件] -o [可執行程序]
例如 gcc -c 666.o -o 666
此時會生成可執行程序 666
如果想執行使用該命令:
$ ./可執行程序
其中./是在當前目錄下的意思。
例如 ./666
(注意:在一般我們使用時 如果使用 gcc 可執行文件名,會默認生成a.out 可執行文件,這時我們直接執行它時用 ./a.out )
原文鏈接:https://blog.csdn.net/lucky_starr/article/details/122277207
相關推薦
- 2022-10-11 Android獲取Apk使用信息
- 2022-09-17 python中pandas常用命令詳解_python
- 2022-01-18 解決CSRF verification failed. Request aborted.的問題
- 2022-08-16 C++超詳細梳理基礎知識_C 語言
- 2022-10-14 SpringCloud組件之Gateway微服務網關
- 2022-05-23 一起來學習Python的列表_python
- 2022-02-02 【layui】【laydate】設置可以選擇相同的年份范圍
- 2022-07-14 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同步修改后的遠程分支