gcc簡介(學習筆記)
gcc所支援字尾名解釋
—— .c c原始程式
—— .C/.cc/.cxx C++原始程式
—— .m Objective-C原始程式
—— .i 經過預處理的c原始程式
—— .ii 經過預處理的C++原始程式
—— .s/.S 組合語言原始程式
—— .h 預處理檔案(標頭檔案)
—— .o 目標檔案
—— .a/.so 編譯後的庫檔案
編譯器的主要元件
—— 分析器:分析器將源語言程式程式碼轉換為組合語言。因為要從
一種格式轉換為另一種格式(C到彙編),所以分析器需要知道目
標機器的組合語言。
—— 彙編器:彙編器將組合語言程式碼轉換為CPU可以執行位元組碼。
—— 聯結器:連結器將彙編器生成的單獨的目標檔案組合成可執行
的應用程式。連結器需要知道這種目標格式以便工作。
—— 標準C庫:核心的C函式都有一個主要的C庫來提供。如果在應
用程式中用到了C庫中的函式,這個庫就會通過連結器和原始碼連
接來生成最終的可執行程式。
GCC的基本用法和選項
—— Gcc最基本的用法是:gcc [options] [filenames]
-c:只編譯,不連線生成可執行檔案,編譯器只是由輸入的.c等
原始碼檔案生成.o為字尾的目標檔案,通常用於編譯不包括主程
序的子程式檔案。
-o:output filename,確定輸出檔案的名稱為output filename,
同時這個名稱不能和原始檔同名。如果不給出這個選項,gcc就給
出預設的可執行檔案a.out
-g:產生符號除錯工具(GDB)所必要的符號資訊,想要對原始碼
進行除錯,我們就必須加入這個選項。
-0:對程式進行優化編譯、連線,採用這個選項,整個原始碼會在
編譯、連線過程中進行優化處理,這樣產生的可執行檔案的執行效
率可以提高,但是,編譯、連線的速度就相應地要慢一些。
-02:比-0更好的優化編譯、連線,當然整個編譯、連線過程會更慢
-I:將dirname所指出的目錄加入到程式標頭檔案目錄列表中,是在預
編譯過程中使用的引數。
-L:將dirname所指出的目錄加入到程式函式檔案檔案的目錄列表中,
是在連結過程中使用的引數
GCC編譯過程
—— GCC編譯流程分為四個步驟
1、預處理(Pre-Processing)*.i
2、編譯(Compiling)*.s
3、彙編(Assembling)*.o
4、連結(Linking)*.exe
hello.c gcc -E 生成.i檔案
hello.i gcc -S 生成彙編檔案
hello.s gcc -c 生成.o檔案
hello.o
相關文章
- OCI學習筆記--簡介(一)筆記
- MuJoCo 學習筆記:簡介 Overview筆記View
- uiautomator學習筆記(一)簡介UI筆記
- WCF學習筆記(一):WCF簡介筆記
- Flutter學習筆記(2)--Dart語言簡介Flutter筆記Dart
- Dart語言學習筆記(一) —— Dart簡介Dart筆記
- JAVANIO學習筆記1-架構簡介Java筆記架構
- SpringCloud學習筆記:SpringCloud簡介(1)SpringGCCloud筆記
- gcc 簡介(轉)GC
- ES6學習筆記--es6簡介筆記
- 學習筆記-React的簡單介紹&工作原理筆記React
- 廖雪峰Git學習筆記1-Git簡介Git筆記
- TDD學習筆記【二】---單元測試簡介筆記
- 比特幣學習筆記——————1、比特幣簡介比特幣筆記
- TestNG簡單介紹以及安裝—學習筆記1筆記
- GCC/G++學習筆記 - 1 - 執行預編譯GC筆記編譯
- Git極簡學習筆記Git筆記
- Git 簡單使用學習筆記Git筆記
- PHP + MySQL 學習筆記(七)--- jQuery 及 jQuery Mobile 簡介 + 兩個 練習PHPMySql筆記jQuery
- Unix高階程式設計學習筆記--系統呼叫簡介程式設計筆記
- C#學習筆記(六)——物件導向程式設計簡介C#筆記物件程式設計
- webpack 學習筆記:入門介紹Web筆記
- Jenkinsant介紹(學習筆記五)Jenkins筆記
- uboot-uboot介紹-學習筆記boot筆記
- jquery學習手記(10)事件簡介jQuery事件
- xhtml & css 簡易學習筆記(一)HTMLCSS筆記
- IO——簡略的學習筆記(1)筆記
- 【Java學習筆記(五十三)】之Git簡介,Git常用命令Java筆記Git
- Docker 學習筆記(第九集:Laradock 簡介及使用)Docker筆記
- 學習筆記二--Weex語法介紹筆記
- DG學習筆記(1)_入門介紹筆記
- Burp Suite學習記錄1 - 簡介UI
- 【筆記】【THM】Introduction to Cryptography(密碼學簡介)筆記密碼學
- numpy的學習筆記\pandas學習筆記筆記
- java大資料最全課程學習筆記(3)--HDFS 簡介及操作Java大資料筆記
- React Native學習筆記----React Native簡介與環境安裝React Native筆記
- GitHub 極簡學習筆記(更新完畢)Github筆記
- spring boot學習簡要筆記1Spring Boot筆記