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
相關文章
- MuJoCo 學習筆記:簡介 Overview筆記View
- SpringCloud學習筆記:SpringCloud簡介(1)SpringGCCloud筆記
- Dart語言學習筆記(一) —— Dart簡介Dart筆記
- 比特幣學習筆記——————1、比特幣簡介比特幣筆記
- Flutter學習筆記(2)--Dart語言簡介Flutter筆記Dart
- ES6學習筆記--es6簡介筆記
- 學習筆記-React的簡單介紹&工作原理筆記React
- 廖雪峰Git學習筆記1-Git簡介Git筆記
- Git極簡學習筆記Git筆記
- Jenkinsant介紹(學習筆記五)Jenkins筆記
- PHP + MySQL 學習筆記(七)--- jQuery 及 jQuery Mobile 簡介 + 兩個 練習PHPMySql筆記jQuery
- C#學習筆記(六)——物件導向程式設計簡介C#筆記物件程式設計
- Docker 學習筆記(第九集:Laradock 簡介及使用)Docker筆記
- Unix高階程式設計學習筆記--系統呼叫簡介程式設計筆記
- React Native學習筆記----React Native簡介與環境安裝React Native筆記
- Git 簡單使用學習筆記Git筆記
- 【筆記】【THM】Introduction to Cryptography(密碼學簡介)筆記密碼學
- uboot-uboot介紹-學習筆記boot筆記
- [PyTorch 學習筆記] 5.1 TensorBoard 介紹PyTorch筆記ORB
- webpack 學習筆記:入門介紹Web筆記
- Burp Suite學習記錄1 - 簡介UI
- 【Java學習筆記(五十三)】之Git簡介,Git常用命令Java筆記Git
- spring boot學習簡要筆記1Spring Boot筆記
- IO——簡略的學習筆記(1)筆記
- java大資料最全課程學習筆記(3)--HDFS 簡介及操作Java大資料筆記
- Puppeteer筆記(一):Puppeteer簡介筆記
- C語言-GCC的簡單介紹C語言GC
- numpy的學習筆記\pandas學習筆記筆記
- SpringMVC學習筆記之---簡單入門SpringMVC筆記
- GitHub 極簡學習筆記(更新完畢)Github筆記
- Scikit-Learn 與 TensorFlow 機器學習實用指南學習筆記1 — 機器學習基礎知識簡介機器學習筆記
- 步步學習自定義View:Hencoder 精簡版學習筆記(一)View筆記
- 學習筆記筆記
- 小白的學習筆記——Redis的簡單使用筆記Redis
- Python 開發簡單爬蟲 (學習筆記)Python爬蟲筆記
- ES 筆記十五:聚合分析簡介筆記
- Linux 筆記分享一:Linux 簡介Linux筆記
- 隨機學習簡介隨機