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添加环境变量,完成工具链配置

(一)arm交叉编译工具链准备的更多相关文章

  1. ARM交叉编译工具链分类说明

    转载整理自:http://www.veryarm.com/cross-tools 从授权上,ARM交叉编译工具链分为免费授权版和付费授权版. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自 ...

  2. 【转】ARM交叉编译工具链

    原文网址:http://www.veryarm.com/cross-tools 为什么要用交叉编译器? 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台( ...

  3. ARM交叉编译工具链

    交叉编译工具链是一个由编译器.连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils.gcc和glibc三个部分组成. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译 ...

  4. Linux ARM交叉编译工具链制作过程【转】

    本文转载自:http://www.cnblogs.com/Charles-Zhang-Blog/archive/2013/02/21/2920999.html 一.下载源文件 源代码文件及其版本与下载 ...

  5. 构建嵌入式Linux交叉编译工具链

    开源交叉编译工具链制作方法汇总: 1) 使用crosstool/crosstool-ng生成 2) 使用buildroot生成 ARM交叉编译工具链说明: 1) arm-linux-gcc是一个集合命 ...

  6. Linux下获取arm的交叉编译工具链

    转载请注明文章:Linux下获取arm的交叉编译工具链 出处:多客博图 这里介绍,Linux下获取arm的交叉编译工具链,比如arm-linux-gnueabihf-gcc.arm-linux-gne ...

  7. CROSSTOOL-NG建立交叉编译工具链

    CROSSTOOL-NG建立交叉编译工具链 因为考试和学习的原因我已经一段时间没有玩我的JZ2440,现在终于考完试了,我再次找出了我的JZ2440.我之前学习的时候使用的是韦东山老师提供的开发工具, ...

  8. Crosstool-ng制作交叉编译工具链

    Crosstool-ng制作交叉编译工具链 交叉编译器可以用现成的,比如CodeSourcery制作的交叉编译器,也可以自己制作,一般是用kernel+gcc+glibc+binutils的源码包来编 ...

  9. Ubuntu16.04下的2009q3交叉编译工具链的搭建

    环境搭建:    1.下载arm-2009q3.tar.bz2源码.  百度云链接  密码: rbui    2.将arm-2009q3.tar.bz2拷贝到/usr/local/arm(没有该目录就 ...

随机推荐

  1. mybatis入门总结一

    1.parameterType 表示输入参数的类型 2.resultType  表示输出结果的类型 不管输出的是一条还是多条,都只代表单条记录所映射的java对象类 3.#{} 表示sql语句中的占位 ...

  2. CentOS vim的使用

    安装vim工具 [root@bogon ~]# yum install -y vim-enhanced 卸载vim工具 [root@bogon ~]# yum remove -y vim* vim常用 ...

  3. Quartz-第一篇 认识Quartz

    1.什么是Quartz Quartz是一个任务调度框架,借助Cron表达式,Quartz可以支持各种复杂的任务调度.JDK中也提供了简单的任务调度,java.util.Timer. Quartz的三大 ...

  4. UVA1626 括号序列 Brackets sequence(区间dp)

    题目传送门(洛谷)   题目传送门(UVA) 解题思路 很显然是一个区间dp,当然记忆化搜索完全可以AC,这里说一下区间dp. 区间dp的重要特征就是需要枚举中间节点k 看一看这道题,用f[i][j] ...

  5. 最小割树(Gomory-Hu Tree)求无向图最小割详解 附 BZOJ2229,BZOJ4519题解

    最小割树(Gomory-Hu Tree) 前置知识 Gomory-Hu Tree是用来解决无向图最小割的问题的,所以我们需要了解无向图最小割的定义 和有向图类似,无向图上两点(x,y)的割定义为一个边 ...

  6. 那些年很脑残的bugs

    1.老师给了前端界面,我们用java写后台. 我改了表单form的action属性,让它跳到自己写的servlet上面去.自己在servlet里面对数据库一顿操作猛如虎,然后让servlet跳回原来页 ...

  7. 记录使用node启用微信公众平台服务器配置

    在微信公众平台的基本信息里面的,修改服务器配置后会有下面的界面. EncodingAESKey是随机生成的,加密方式根据需要自己选择. 关于URL和Token: URL:填写之后会向这个URL发送一个 ...

  8. django ORM数据库操作

    5.使用Django的ORM详细步骤: 1. 自己动手创建数据库 create database 数据库名; 2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库) # ...

  9. MAT in eclipse - memory analyzer

    In Help > Install New Software..., enter the following update site URL: http://download.eclipse.o ...

  10. Tomcat 9 安装

    1.下载 官网:https://tomcat.apache.org/ 在浏览器地址栏输入地址,进入下图页面. 点击下图红色标记处(笔者选择的Tomcat 9下载,读者可根据需要自行选择) 下图蓝色标记 ...