zoukankan      html  css  js  c++  java
  • (一)arm交叉编译工具链准备

    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添加环境变量,完成工具链配置
  • 相关阅读:
    云计算管理平台之OpenStack启动虚拟机实例
    云计算管理平台之OpenStack网络服务neutron
    云计算管理平台之OpenStack计算服务nova
    云计算管理平台之OpenStack镜像服务glance
    云计算管理平台之OpenStack认证服务Keystone
    云计算管理平台之OpenStack简介及基础环境搭建
    jumpserver部署使用
    分布式消息系统之Kafka集群部署
    写好C#代码的技巧
    .NET应用程序7种最常见的性能问题及其解决方案
  • 原文地址:https://www.cnblogs.com/edver/p/10487099.html
Copyright © 2011-2022 走看看