1。背景

arm机器一般因为资源问题进行编译会影响开发速度,而且很多时候因为资源不够而无法完成编译工作。因此,需要在执行机上进行交叉编译,即使用x86或其他架构机器基于交叉编译工具编译出在arm上可以运行的程序。

2. 分类和说明

从授权上,分为免费授权版和付费授权版。

免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora。

    收费版有ARM原厂提供的armcc、IAR提供的编译器等。

    免费版如下几种:

    arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
    arm-linux-gnueabihf-gcc:是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
    aarch64-linux-gnu-gcc:是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARMv8 64位目标中的裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
    arm-none-elf-gcc:是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。
    arm-none-eabi-gcc:是 GNU 推出的的ARM交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。

    命名规则: https://www.veryarm.com/296.html

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

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

找到一个下载地址(http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/),不会用。开始学怎么编。

3. 自己编译交叉编译器

3.1 先准备本地环境,安装必要的工具

sudo apt-get install bison flex texinfo automake libtool cvs patch curl  subversion gawk cvsd gperf

其中:

bison和flex是用来生成语法和词法分析器;

texinfo和man类似,用来读取帮助文档;

automake是帮助生成Makefile的工具;

libtool帮助在编译过程中处理库的依赖关系,自动搜索路径;

cvs、cvsd和subversion是版本控制软件,用于编译过程中的源码下载;

curl通过给定的网络地址下载源码的工具;

patch是用于给源码打补丁的工具;

gawk是linux下用于文本处理和模式匹配的工具。

3.2 获取crosstool-NG的源码

网站: http://crosstool-ng.github.io/
下载最新的版本:git clone https://github.com/crosstool-ng/crosstool-ng
3.3 安装
    下载完成后执行 :
 ./bootstrap
 ./configure --prefix /opt/arm-linux-tool/crosstool-ng/
    会有libtool找不到的错误: 解决-》sudo apt install libtool-bin && libtool --version 
    之后执行make  
             make install
    进行安装ct-ng
 
    安装完成后配置环境变量,将ct-ng加入环境变量中
 
 从根目录中的amples/arm-unknown-linux-gnueabi拷贝出需要的配置文件到根目录中 .configure
    执行ct-ng menuconfig进行配置,此部分可参考: https://www.jianshu.com/p/a513590de6b8
    安装需要下载大量文件,虚拟机实在扛不住,因此,,,,放弃了。。
    去找官方网站下载去
 
最终使用的下载地址:
https://developer.arm.com/open-source/gnu-toolchain/gnu-a/downloads
这里的原始文件是从linaro拿到的,地址如下: http://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabi
下载完成后放入虚拟机解压,然后export添加环境变量,完成工具链配置

最新文章

  1. rabbitMQ第五篇:Spring集成RabbitMQ
  2. lua下的简单OO实现
  3. mariadb:InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
  4. 服务器内存UDIMM与RDIMM区别
  5. js DOM Node类型
  6. 关于c#中的console用法大全
  7. 数据库ACID
  8. jquery 小知识点
  9. 剑指OFFER之旋转数组的最小数字(九度OJ1386)
  10. observeMode
  11. InsertSort 插入排序
  12. c语言,const被绕过
  13. 终于懂了:Delphi消息的Result完全是生造出来的,不是Windows消息自带的(Delphi对Windows编程体系的改造越大,学习收获就越大)——消息是否继续传递就看这个Result
  14. 斐讯K2 V22.X.X.X 新版固件 刷机教程 (开telnet,安装SSH,adbyby,刷breed,华硕Padavan)
  15. Rafy 领域实体框架简介
  16. SolidWorks装配体
  17. 面试题之(vue生命周期)
  18. Visual Studio "14" CTPs
  19. python接口自动化2-发送post请求
  20. 分享七个绚丽夺目的JQuery导航(还有苹果、猪八戒等),有图有真相

热门文章

  1. CSS基础--属性选择器、伪类选择器
  2. php ecshop采集商品添加规则
  3. 浏览器如何减少 reflow/repaint
  4. Python中字符串的格式化
  5. 解决图片插入word文档后清晰度降低的问题
  6. python常用函数 L
  7. javascript 设置cookie和取得cookie
  8. javascript实现下拉菜单的显示与隐藏
  9. 三栏布局只知道圣杯、双飞翼,最终评级是……F
  10. 18.Vim基础指令(自用)——2019年12月13日