2012-11-05 64 views
1

我對工具鏈,arm-eabi-gcc,arm-linux-gcc和arm-elf-gcc非常奇怪。爲什麼uboot使用arm-linux-gcc作爲默認arm CROSS_COMPILE?

對於arm-linux-gcc和arm-elf-gcc,在我看來,只是使用了不同的libc。

但是arm-eabi-gcc和arm-linux-gcc有什麼區別?

我認爲arm-eabi-gcc不會內建在libc中。我對嗎 ?

如果不是,你能幫我糾正嗎?

爲什麼uboot使用arm-linux-gcc作爲默認的arm交叉編譯器?

據我所知,uboot不需要依賴的libc。

所以這是我的問題。

thx!

+0

這個答案也可以提供一些線索http://stackoverflow.com/questions/13143393/distro-provided-cross-compiler-vs-custom - 內置的gcc/13147962#13147962 – auselen

回答

1

GCC編譯器*gcc是一個運行其他程序的驅動程序。所以運行

arm-linux-gcc -v -O -Wall helloworld.c -o hellworld-linux-gcc 
arm-elf-gcc -v -O -Wall helloworld.c -o hellworld-elf-gcc 
arm-eabi-gcc -v -O -Wall helloworld.c -o helloworld-eabi-gcc 

你會明白不同之處。他們大概都會運行一些cc1程序做彙編代碼翻譯,一些as程序將彙編代碼彙編成目標代碼,一些ld程序與一些標準庫進行鏈接。他們還可以運行一些collect2包裝一些鏈接等等等等

你也可以運行簡單的arm-linux-gcc -varm-elf-gcc -varm-eabi-gcc -v,以瞭解你的編譯器已經配置,以及它們的精確版本。

2

它被稱爲工具鏈的target aliastarget-triplet它基本上是從其他工具鏈和本地工具鏈中識別工具鏈。它會告訴你什麼樣的架構,ABI和目標主機的工具鏈的,例如建:

臂無-gnueabi:裸機(無操作系統)GNU ABI

ARM-Linux的EABI:產生二進制代碼託管系統(運行Linux環境)

相關問題