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.刪...