arm交叉編譯器簡單介紹

2021-07-15 04:52:04 字數 1662 閱讀 7541

交叉編譯工具鏈的命名規則為:arch [-vendor] [-os] [-(gnu)eabi]

根據對作業系統的支援與否,arm gcc可分為支援和不支援作業系統,如

- arm-none-eabi:這個是沒有作業系統的,自然不可能支援那些跟作業系統關係密切的函式,比如fork(2)。他使用的是newlib這個專用於嵌入式系統的c庫。

- arm-none-linux-eabi:用於linux的,使用glibc

(arm architecture, no vendor, creates binaries that run on the linux operating system, and uses the gnu eabi)

主要用於基於arm架構的linux系統,可用於編譯 arm 架構的 u-boot、linux核心、linux應用等。arm-none-linux-gnueabi基於gcc,使用glibc庫,經過 codesourcery 公司優化過推出的編譯器。arm-none-linux-gnueabi-*** 交叉編譯工具的浮點運算非常優秀。一般arm9、arm11、cortex-a 核心,帶有 linux 作業系統的會用到。

android arm 編譯器。

arm 公司推出的編譯工具,功能和 arm-none-eabi 類似,可以編譯裸機程式(u-boot、kernel),但是不能編譯 linux 應用程式。armcc一般和arm開發工具一起,keil mdk、ads、rvds和ds-5中的編譯器都是armcc,所以 armcc 編譯器都是收費的。

arm-none-uclinuxeabi用於uclinux,使用glibc。

arm-none-symbianelf用於symbian,沒用過,不知道c庫是什麼 。

eabi:嵌入式abi。嵌入式應用二進位制介面指定了檔案格式、資料型別、暫存器使用、堆積組織優化和在乙個嵌入式軟體中的引數的標準約定。開發者使用自己的組合語言也可以使用 eabi 作為與相容的編譯器生成的組合語言的介面。

兩者主要區別是,abi是計算機上的,eabi是嵌入式平台上(如arm,mips等)。

兩個交叉編譯器分別適用於 armel 和 armhf 兩個不同的架構,armel 和 armhf 這兩種架構在對待浮點運算採取了不同的策略(有 fpu 的 arm 才能支援這兩種浮點運算策略)。

其實這兩個交叉編譯器只不過是 gcc 的選項 -mfloat-abi 的預設值不同。gcc 的選項 -mfloat-abi 有三種值 soft、softfp、hard(其中後兩者都要求 arm 裡有 fpu 浮點運算單元,soft 與後兩者是相容的,但 softfp 和 hard 兩種模式互不相容):

soft: 不用fpu進行浮點計算,即使有fpu浮點運算單元也不用,而是使用軟體模式。

softfp: armel架構(對應的編譯器為 arm-linux-gnueabi-gcc )採用的預設值,用fpu計算,但是傳引數用普通暫存器傳,這樣中斷的時候,只需要儲存普通暫存器,中斷負荷小,但是引數需要轉換成浮點的再計算。

hard: armhf架構(對應的編譯器 arm-linux-gnueabihf-gcc )採用的預設值,用fpu計算,傳引數也用fpu中的浮點暫存器傳,省去了轉換,效能最好,但是中斷負荷高。

ARM系列交叉編譯器介紹

arm linux gcc是針對arm linux的開發環境的,kernel使用的是linux,不是uclinux,arm是有硬體mmu 記憶體保護單元 的。arm elf gcc是針對no mmu arm uclinux的開發環境,kernel使用的是uclinux 可執行程式不是elf,而是fl...

arm編譯器交叉編譯SDL

本人的編譯器為64位的arm編譯器 aarch64 linux gnu gcc 在配置編譯時注意按個人實際情況配置 編譯器和 host選項!tar vxf sdl2 2.0.14.tar.gz cd sdl2 2.0.14 根據個人實際情況配置!sudo vim etc environment例如,...

ARM交叉編譯器安裝

安裝arm交叉編譯器 zshh shaohua arm arm資料 cd exynos4412 lzy1 zshh zshh shaohua arm arm資料 exynos4412 lzy1 ls cross compile datasheet doc images rootfs schemati...