天天看點

gcc編譯器用法(自學總結)

GCC僅僅意味着GNU C Compiler。

gcc工作四個步驟:預處理,編譯,彙編,連接配接。

1.預處理:

   編譯器将C源代碼中的包含的頭檔案如stdio.h編譯進來,使用者可以使用gcc的選項”-E”進行檢視。

   用法:#gcc -E hello.c -o hello.i

2.編譯:

   在這個階段中,Gcc首先要檢查代碼的規範性、是否有文法錯誤等,以确定代碼的實際要做的工作,在檢查無誤後,Gcc把代碼翻譯成彙編語言。使用者可以使用”-S”選項來進行      檢視,該選項隻進行編譯而不進行彙編,生成彙編代碼。

選項 -S

  用法: gcc –S hello.i –o hello.s

  作用:将預處理輸出檔案hello.i彙編成hello.s檔案。

3.彙編:

  這個階段是把編譯階段生成的”.s”檔案轉成二進制目标代碼.

選項 -c

用法: gcc –c hello.s –o hello.o

作用:将彙編輸出檔案test.s編譯輸出test.o檔案。

4.連結:

  這個階段實際就是連結位址,比如去動态庫找被調用的函數。

用法:gcc hello.o –o hello.exe

作用:将編譯輸出檔案hello.o連結成最終可執行檔案

【補充】

    arm-linux-gcc   -E      停留在預處理階段

    arm-linux-gcc   -S      停留在編譯階段,這時候的輸出檔案是彙編語言。

    arm-linux-gcc    -c      停留在彙編階段,這時候生成了二進制檔案

    arm-linux-ld   -Ttest=0x xxxxxxxx   指定代碼段的入口位址

    arm-linux-objcopy - I elf32-littlearm -O binary  xxx.bin   去頭生成機器碼

    arm-linux-objdum -h   反彙編

    arm-linux-as    彙編器

利用strace ./a.out 可以跟蹤程式的執行過程

轉載于:https://www.cnblogs.com/jfyl1573/p/6257004.html

繼續閱讀