1. 程式人生 > >簡單說明gcc和arm-linux-gcc的區別

簡單說明gcc和arm-linux-gcc的區別

首先了解一下編譯的過程:一個原始檔經過gcc編譯器編譯後生成可執行檔案其實經歷了四個過程:

* 預處理(Pre-processing)

* 編譯(Compiling)

* 彙編(Assembling)

* 連結(Linking)

而gcc經過編譯後生成的可執行檔案(最後也就是一大堆機器碼)是在linux作業系統之上執行的,也就是說經過gcc編譯器最後生成的一大堆機器碼只有Linux作業系統認識,但是我們做ARM裸機實驗時Soc上是沒有linux作業系統的,所以這時候ARM裸機只認識經過ARM指令集生成的機器碼。這時候我們要想讓可執行檔案在ARM裸機上執行就需要使用arm-linux-gcc (交叉編譯工具)編譯生成的可執行檔案。字面理解arm-linu-gcc的意思也就是編寫環境是使用Linux主機編寫的,然後編譯後要在ARM上執行的可執行檔案。