用編譯工具將源碼文件編譯成可執(zhí)行文件的過(guò)程并不是一步到位的,其中要經(jīng)過(guò)一個(gè)類似工廠流水線的過(guò)程,交叉編譯工具中包含負(fù)責(zé)處理各個(gè)環(huán)節(jié)的功能工具,所以叫做交叉編譯工具鏈。
編譯的一般過(guò)程分為:
預(yù)編譯->編譯->匯編->鏈接->生成elf文件->轉(zhuǎn)換為二進(jìn)制可支持bin文件。
預(yù)編譯Pre-compile階段:主要是對(duì)頭文件#include 、宏定義#define等進(jìn)行展開(kāi)。
編譯compile階段:主要是將我們的.c文件編譯成匯編.s文件。
匯編Assembly階段:將匯編文件.s編譯成為目標(biāo)文件.o。
鏈接Link階段:將生成.o文件鏈接生成.elf文件。
轉(zhuǎn)換階段:將生成的.elf文件轉(zhuǎn)換成為可執(zhí)行二進(jìn)制.bin文件。
而這些編譯步驟是通過(guò)make工具解析Makefile文件來(lái)執(zhí)行。Makefile 文件中描述了整個(gè)工程所有文件的編譯順序、編譯規(guī)則、依賴關(guān)系等。關(guān)于Makefile更多內(nèi)容,請(qǐng)閱讀后面Makefile章節(jié)。