有關gcc的知識簡述

2021-08-09 01:43:58 字數 2088 閱讀 5487

gcc的命令使用格式為:gcc[選項][檔名][選項][檔名]

1. gcc 命令擁有數量龐大的編譯選項,按型別可以把選項分為以下幾大類。

總體選項:用於控制編譯的整個流程。常用選項:

-c:對原始檔進行編譯或彙編。

-e:對原始檔進行預處理。

-s:對原始檔進行編譯。

-o file

:輸出目標檔案

file。

-v:顯示編譯階段的命令。

警告選項:用於控制編譯過程中產生的各種警告資訊。常用選項:

-w:遮蔽所有的警告資訊。

-wall:顯示所有型別的警告資訊。

-werror:出現任何警告資訊就停止編譯。

除錯選項:用於控制除錯資訊。常用選項:

-g:產生除錯資訊。

優化選項:用於對目標檔案進行優化。常用選項:

-o1:對目標檔案的效能進行優化。

-o2:在-o1 的基礎上進一步優化,提高目標檔案的執行效能。-o3:在-o2 的基礎上進一步優化,支援函式整合優化。-o0:不進行優化。

-llibrary

:鏈結library

函式庫檔案。

-l dir

:指定聯結器的搜尋目錄

dir。-shared:生成共享檔案。

目錄選項:用於指定編譯器的檔案搜尋目錄。常用選項:

-idir

:指定標頭檔案的搜尋目錄

dir。-ldir:指定搜尋目錄 dir。

2. gcc 工作流程

在c語言的編譯流程中,依次要進行:預處理,編譯,彙編,鏈結四個階段。

1. 預處理階段(展開標頭檔案)

ep:gcc -e test.c -o test.i

由於在 test.c 中使用了標頭檔案 stdio.h,所以 gcc 在編譯時首先要把頭檔案 stdio.h 中的內容載入到 test.c 中的首部。

在 shell 中輸入命令「gcc -e test.c -o test.i」。其中,引數 e 告訴 gcc 命令只進行預編譯,不做其他處理;引數 o 用來指明輸出的檔名為 test.i。命令執行完畢後就會產生乙個名為 test.i 的檔案。

2. 編譯階段(語法檢查)

ep:gcc -s test.i -o test.s

編譯階段是整個編譯過程中最複雜的乙個階段。這裡拿自然語言的翻譯過程作個對比。

比如在把「i love china」翻譯成中文前,需要依次完成以下幾個步驟:

1)考察這個句子中每個單詞的拼寫是不是正確。

2)考察整個句子的語法(比如主謂賓、定狀補的結構等)是不是正確。

3)考察整個句子的語義是不是正確。

只有以上三個步驟都正常通過了,才能保證句子被正確翻譯。同樣,高階程式語言的編譯階段也必須實現這三個步驟。

1)步驟 1 稱為詞法分析,主要負責檢查關鍵字、識別符號等是否正確。

2)步驟 2 稱為語法分析,主要負責檢查程式中語句的語法是否正確。

3)步驟 3 稱為語義分析,主要負責檢查程式中語句的邏輯意義是否正確。

在 shell 中輸入命令「gcc -s test.i -o test.s」。其中,引數 s 告訴 gcc 命令只進行編譯,不做其他處理。命令執行完畢後就會產生乙個名為 test.s 的彙編檔案。

3. 彙編階段(產生目標檔案)

ep:gcc -c test.s -o test.o

彙編階段的任務是把匯程式設計序翻譯成 cpu 可以識別的二進位制檔案,該檔案又稱為目標檔案。

在 shell 中輸入命令「gcc -c test.s -o test.o」,其中,引數 c 告訴 gcc 命令只進行彙編,不做其他處理。命令執行完畢後就會產生乙個名為 test.o 的目標檔案。

4. 鏈結階段(鏈結所有目標檔案和庫檔案)

ep:gcc test.o -o test

鏈結階段的任務就是把程式中所有的目標檔案和所需的庫檔案都鏈結在一起,最終生成乙個可以直接執行的檔案,稱為可執行檔案。

在 shell 中輸入命令「gcc test.o -o test」,執行完畢後就會產生乙個名為 test 的可執行檔案。輸入命令「./test」執行該檔案,就可以得到 test 檔案的執行結果。

若未重新命名 則 ./a.out 輸出

有關VLAN的簡述

網路中能接收同乙個廣播的所有節點的集合叫做廣播域。而劃分廣播域有 物理劃分,邏輯劃分。而通過vlan劃分的就是邏輯劃分,通過交換機劃分的則是物理劃分。vlan的概念 vlan就是虛擬區域網,是一組邏輯上的裝置和使用者,這些裝置和使用者並不受物理位置的限制,可以根據功能 部門及應用等因素將它們組織起來...

GCC 編譯 std簡述

用gcc編譯 時候後面帶有 std c 1z 的選項,這是指定c c 的標準.具體的標準如下,詳細資訊可以看引用裡面的詳細說明 stand descript std c90 or std iso9899 1990 稱為c89或c90 std iso9899 199409 稱為c94或c95 std ...

有關OSPF的簡述一

as 自治系統,是指同乙個技術管理機構管理,使用統一選路策略的一些路由器的集合 igp 內部閘道器路由協議,作用於區域網內部的協議 egp 外部閘道器路由協議,作用於區域與區域之間 距離向量路由協議 傳說 的路由,對於網路中的路由不是完全了解 鏈路狀態路由協議 傳信 的路由,對於全網的路由完全了解 ...