2015-11-07 86 views
6

我有一些編譯ARM cortex-m設備的裸機代碼以及Beaglebone Black(BBB)的Linux內核,uBoot和應用程序的經驗(對於那些生活在搖滾中的人來說,更多功能ARM和MMU)。它使我對cortex-m代碼應該使用arm-none-eabi-gcc進行編譯(因爲沒有OS),並且BBB的應用程序代碼應該用arm-linux-gnueabi-gcc編譯(如那裏是一個可以進行系統調用的OS,以及可以使用的程序加載器和共享對象)。編譯Linux內核和uBoot時爲什麼使用arm-linux-gnueabi-gcc而不使用arm-none-eabi-gcc?

我不明白的是爲什麼uBoot和內核也應該用arm-linux-gnueabi-gcc編譯。在我看來,uBoot至少是一個沒有花哨的操作系統的裸機程序。這一直困擾我一段時間,但我找不到答案。有沒有人能夠啓發我?

+0

你從哪裏學到這個*「uBoot [sic],內核也應該用arm-linux-gnueabi-gcc」*編譯?我已經看到U-Boot和Linux內核使用相同的工具鏈編譯(例如在Buildroot中),這大概是因爲方便。但我通常使用裸機工具鏈作爲引導程序,例如U-Boot(即,我構建了兩個工具鏈)。 – sawdust

+0

我剛剛從例如[this](http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User's_Guide#Building_U-Boot)中假設。你是說uBoot實際上可以被編譯嗎?內核呢? –

+1

是的。同樣的交易。 – sawdust

回答

0

U-Boot旨在儘可能反映Linux設計理念。它使用相同的配置系統,通用目錄結構等。它與Linux共享一些API - 請參閱include/linux目錄。如上所述,ABI兼容性在這一點上並不重要,但使用Linux編譯器對於U-Boot來說在哲學上並不合適。