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 可以跟蹤程序的執行過程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM