GCC編譯流程分析

2021-05-23 22:33:04 字數 688 閱讀 5171

1.預處理結點

gcc的選項「-e」可以使編譯器在預處理結束時就停止編譯

gcc -e -o hello.i hello.c

字尾名「.i」的檔案是經過預處理的c原始程式。

2.編譯階段

gcc的選項"-s"能使編譯器在進行完編譯之前就停止。

3.彙編階段

彙編階段把編譯階段生成的「.s」檔案生成目標檔案,在此使用「-c」就可以檢視到彙編**轉化為".o"的二進位制目標**了。

4.鏈結階段

若使用者要呼叫含有同名動態庫的靜態庫檔案,則在"-l"後需要顯示地寫出包含字尾名的檔名,如:要呼叫libm.a庫檔案時就需寫作「-llibm.a」

嵌入式系統開發環境的搭建

1.編譯binutils

2.初次編譯gcc

gcc編譯分兩次。由於此時沒有編譯glibc,因此還不能完整地編譯gcc,但glibc的編譯又離不開gcc,因此,在這裡需要首先編譯出乙個具體最基本功能的gcc,在編譯完glibc之後再完整編譯gcc。

修改「gcc/config/arm/t-linux"這個配置檔案,使其不對libc和gthr_posix.h檔案進行編譯。

新增"-dinhibit_libc"和」-d--gthr_posix_h「

3.編譯glibc

4.完整編譯gcc

GCC編譯流程分析

0.原始碼 include intmain gcc e demo.c o demo.i 1.預編譯 不做其他處理,輸出檔案為demo.i 2.編譯階段,只進行編譯,不做其他,生成乙個彙編檔案 gcc s demo.i o demo.s 學習組合語言的時候,可以對照c語言機器彙編 file demo....

gcc編譯流程

可以利用gcc的引數來控制執行的過程,這樣就可以更深入的了解編譯c程式的過程。下面將通過對乙個程式的編譯來演示整個過程。includeint main 1 預處理 編譯器將c程式的標頭檔案編譯進來,還有巨集的替換,可以用gcc的引數 e來參看。命令 gcc e hello.c o hello.i 作...

gcc編譯流程

步驟命令 說明預處理 gcc e hello.c o hello.i 1.將所有 define刪除,並且展開所有的巨集定義 2.處理所有的條件預編譯指令,如 if ifdef undef ifndef endif elif 3.處理 include,將包含的檔案插入到此處,這是乙個遞迴的過程 4.刪...