zoukankan      html  css  js  c++  java
  • ARM 交叉编译工具链

    命名规则

    交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]

    • arch - 体系架构,如ARM,MIPS
    • verdor - 工具链提供商
    • os - 目标操作系统
    • eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface (ABI) )

    具体编译器

    • arm-none-eabi-gcc

      ARM architecture,no vendor,not target an operating system,complies with the ARM EABI(ARM 程序接口)

      用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel)他使用的是
      newlib 这个专用于嵌入式系统的C库,安装方法:

      sudo apt-get install gcc-arm-none-eabi
      
    • arm-linux-gnueabi-gcc

      ARM architecture, creates binaries that run on the Linux operating system, and uses the GNU EABI (GUN 程序接口)

      也叫 arm-none-linux-gnueabi-gcc,因为一开始是没有发行商的,目前由Linaro 公司发行(Linaro 则是由ARM、飞思卡尔、IBM、Samsung、ST-Ericsson和TI等厂商联合,为开发不同半导体公司系统单芯片(SoC)平台的共通软件的一个非盈利公司),使用glibc,可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序,安装方法:

      sudo apt-get install gcc-arm-linux-gnueabi
      
    • arm-linux-gnueabihf-gcc

      arm-linux-gnueabi-gcc 区别不过是 gcc 的选项 -mfloat-abi 的默认值不同,即浮点数处理上的不同

      -mfloat-abi 有三种值:

      1. soft: 不用fpu进行浮点计算,即使有fpu浮点运算单元也不用,而是使用软件模式
      2. softfp: armel架构(对应的编译器为 arm-linux-gnueabi-gcc )采用的默认值,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。
      3. hard: armhf架构(对应的编译器 arm-linux-gnueabihf-gcc )采用的默认值,用fpu计算,传参数也用fpu中的浮点寄存器传,省去了转换,性能最好,但是中断负荷高。
    • arm-eabi-gcc
      Android ARM 编译器

    • armcc
      ARM 公司推出的编译工具,功能和 arm-none-eabi-gcc 类似,可以编译裸机程序(u-boot、kernel),但是不能编译 Linux 应用程序

    • arm-none-uclinuxeabi-gcc
      arm-none-uclinuxeabi 用于uCLinux,使用Glibc

    • arm-none-symbianelf-gcc
      用于symbian。

  • 相关阅读:
    py pandas
    wxPython 创建基本窗口
    js 动态修改页面文本字体
    uniapp 万年历
    uniapp设置不同的主题(Theme)
    flutter 插件调用callback函数
    题解:[SDOI2009]HH的项链
    模板:线段树(2)——加法,乘法,求和
    模板:KMP算法
    模板:单源最短路径。堆优化的dijkstra。
  • 原文地址:https://www.cnblogs.com/wjundong/p/13972935.html
Copyright © 2011-2022 走看看