標頭檔案 gcc編譯

2021-09-01 02:32:39 字數 1115 閱讀 9540

1、標頭檔案的包含方式

#include 

預設是從 /usr/include/ 目錄下搜尋檔案

#include  "stdio.h"

#include "../stdio.h"

先在當前目錄下搜尋檔案,如果沒有,再去  /usr/include  下找

2、c語言的編譯步驟

預處理(預編譯)

處理 「#」 開頭的內容,進行替換(執行巨集替換)、去掉注釋、

生成預處理檔案,字尾名-.i

編譯編譯器將高階語言翻譯成組合語言

生成彙編檔案,字尾名-.s

彙編把彙編檔案翻譯成機器指令

生成目標檔案,字尾名是-.o

鏈結用於將目標檔案和標準庫鏈結,得到可執行檔案

生成的是最終的可以執行的程式

3、gcc命令的使用

gcc -e

對檔案進行預處理,生成預處理檔案

gcc -s

對檔案進行編譯,生成彙編檔案

gcc -c

對檔案進行彙編,生成目標檔案

gcc  -o

給生成的檔案重新命名

4、執行的程式被讀到記憶體中執行(未執行的程式被儲存在u盤/硬碟等儲存裝置中),記憶體最小的儲存單位是位元組(b)。記憶體統一為每個位元組分配了乙個編號,編號的位數固定。例如32位系統,其位址編號長度為32位(4b長度),其位址值範圍為0x0000 0000-0xffff ffff

5、int a=10;

(1)、int(變數型別)——代表變數為「int」型別,進而確定變數「a」所代表的儲存空間佔4b

(2)、a(變數名)——代表某一段記憶體,對「a」的操作就是對這一段記憶體進行操作。變數a,意指符號a(變數名)及其所代表的四位元組長度的實際物理空間(變數空間)

(3)、a=10——將常量「10」賦給變數「a」 。將十進位制「10」轉化為二進位制「1010」後,儲存在「a」變數所代表的記憶體空間裡。該記憶體空間的位址由4b儲存空間第乙個位元組的位址指定。int型變數a所代表的位址空間為四個位元組長度,其首位元組的位址隨機分配,也是隨時變化的

注:字元常量儲存在計算機儲存單元時,並不是儲存字元,而是以其**儲存的(一般是ascii碼)。例如字元『a』的ascii**是97,因此,在儲存單元中存放的是97(以二進位制形式存放)。

預編譯標頭檔案的問題(gcc)

首先 說說預編譯的好處 就是提高編譯速度 其次 預編譯標頭檔案可以用在一下場合 1 提供某種固定功能和不變的型別定義 2 減少編譯的時間 接著 說說預編譯可能帶來的問題 在預編譯中 gcc 會將.h編譯成.gch檔案,按理說只要.h檔案改動就應該重新編譯.gch檔案,但如果沒有將.h檔案設定為.gc...

gcc 標頭檔案 search option

標頭檔案搜尋路徑相關 基本的搜尋順序 1.i dir 2.gcc 環境變數 c include path,cplus include path,objc include path 3.gcc 系統標準路徑 standard system include directories usr include...

樹莓派使用gcc編譯含mysql h標頭檔案的C語言

雖然ubuntu和樹莓派都是基於linux系統開發的,但是他們的資料庫有所不同。在樹莓派上,我只能夠安裝mariadb server 10.0,而不能安裝mysql server。在執行某些c語言對資料庫操作的程式造成了困擾。ubuntu的 gcc i usr include mysql c l u...