arm系列的交叉編譯器各版本的區別

ARM 344瀏覽

arm-linux-gcc是針對arm
+ linux的開發環境的,kernel使用的是linux,不是uclinux,arm是有硬件MMU的。

arm-elf-gcc是針對no MMU arm + uclinux的開發環境,kernel使用的是uclinux,硬件是廉價的無MMU的arm芯片。

arm-linux-gcc 與arm-elf-gcc 區別?
ARM的嵌入式系統開發中,常常用到交叉編譯的GCC工具鏈有兩種:
?arm-linux-*和 arm-elf-*,兩者區別主要在于使用不同的C庫文件。
arm-linux-*使用?GNU的Glibc,
arm-elf-*一般使用 uClibc/uC-libc或者使用REDHAT專門為嵌入式系統?的開發的C庫newlib.Glibc。
uClibc/uC-libc以及 newlib都是C語言庫文件,只是所應?用的領域不同而已,Glibc是針對PC開發的,uClibc/uC-libc是與Glibc API兼容的小型?化C語言庫,實現了Glibc部分功能。 ? 關于uClibc/uC-libc的說明,詳見如下:?

??
arm-linux-*和 arm-elf-*的使用沒有一個絕對的標準,排除不同庫實現的差異,gcc可?以編譯任何系統。arm-linux-*和 arm-elf-*都可以用來編譯裸機程序和操作系統,只?是在遵循下面的描述時系統程序顯得更加協調:?arm-linux-*針對運行linux的ARM機器,其依賴于指定的C語言庫Glibc,因為同樣使用?Glibc的linux而使得arm-linux-*在運行linux的ARM機器上編譯顯得更加和諧。?arm-elf-*則是一個獨立的編譯體系,不依賴于指定的C語言庫Glibc,可以使用newlib?等其他C語言庫,不要求操作系統支持,當其使用為嵌入式系統而設計的一些輕巧的C語?言庫時編譯裸機程序(沒有linux等大型操作系統的程序),如監控程序,bootloader等?能使得系統程序更加小巧快捷。

arm-linux-eabi 和arm-none-eabi

?

arm-linux-eabi?用于編譯?armlinux 代碼

arm-none-eabi 不指名操作系統,可以是linux, 也可以是vxworks等,arm-none-eabi 不包含 __linux__ 等特定宏,所以往往編譯linux 內核的時候通不過。

arm-linux-gcc是針對arm
+ linux的開發環境的,kernel使用的是linux,不是uclinux,arm是有硬件MMU的。

arm-elf-gcc是針對no MMU arm + uclinux的開發環境,kernel使用的是uclinux,硬件是廉價的無MMU的arm芯片。

arm-linux-gcc 與arm-elf-gcc 區別?
ARM的嵌入式系統開發中,常常用到交叉編譯的GCC工具鏈有兩種:
?arm-linux-*和 arm-elf-*,兩者區別主要在于使用不同的C庫文件。
arm-linux-*使用?GNU的Glibc,
arm-elf-*一般使用 uClibc/uC-libc或者使用REDHAT專門為嵌入式系統?的開發的C庫newlib.Glibc。
uClibc/uC-libc以及 newlib都是C語言庫文件,只是所應?用的領域不同而已,Glibc是針對PC開發的,uClibc/uC-libc是與Glibc API兼容的小型?化C語言庫,實現了Glibc部分功能。 ? 關于uClibc/uC-libc的說明,詳見如下:?

??
arm-linux-*和 arm-elf-*的使用沒有一個絕對的標準,排除不同庫實現的差異,gcc可?以編譯任何系統。arm-linux-*和 arm-elf-*都可以用來編譯裸機程序和操作系統,只?是在遵循下面的描述時系統程序顯得更加協調:?arm-linux-*針對運行linux的ARM機器,其依賴于指定的C語言庫Glibc,因為同樣使用?Glibc的linux而使得arm-linux-*在運行linux的ARM機器上編譯顯得更加和諧。?arm-elf-*則是一個獨立的編譯體系,不依賴于指定的C語言庫Glibc,可以使用newlib?等其他C語言庫,不要求操作系統支持,當其使用為嵌入式系統而設計的一些輕巧的C語?言庫時編譯裸機程序(沒有linux等大型操作系統的程序),如監控程序,bootloader等?能使得系統程序更加小巧快捷。

arm-linux-eabi 和arm-none-eabi

?

arm-linux-eabi?用于編譯?armlinux 代碼

arm-none-eabi 不指名操作系統,可以是linux, 也可以是vxworks等,arm-none-eabi 不包含 __linux__ 等特定宏,所以往往編譯linux 內核的時候通不過。

七星彩走势图2元网官网