当前位置: 首页 > news >正文

交叉编译工具链整理

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

    收费版有ARM原厂提供的armcc、IAR提供的编译器等等,因为这些价格都比较昂贵,不适合学习用户使用,所以不做讲述。

  2. arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
  3. arm-linux-gnueabihf-gcc:是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
  4. arm-none-linux-gnueabi-gcc下载:http://www.veryarm.com/arm-none-linux-gnueabi-gcc
  5. arm-linux-gnueabihf-gcc下载:http://www.veryarm.com/arm-linux-gnueabihf-gcc
  6. aarch64-linux-gnu-gcc下载:http://www.veryarm.com/aarch64-linux-gnu-gcc
  7. arm-none-elf-gcc下载:http://www.veryarm.com/arm-none-elf-gcc
  8. arm-none-eabi-gcc下载:http://www.veryarm.com/arm-none-eabi-gcc
    • 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芯片程序。

常用的交叉编译链工具:

arm-none-linux-gnueabi-gcc 

是一个交叉编译器(cross-compiler)的名称,用于在一种架构(如 x86_64 或 ARM)的计算机上编译出另一种架构(在这个例子中是 ARM)上运行的程序。这个命令名由几个部分组成,每个部分都有其特定的含义。下面是 arm-none-linux-gnueabi-gcc 的组成部分解释:

  1. arm: 这部分指定了目标架构(target architecture),即编译器生成的代码将要运行的处理器架构。在这个例子中,它是 ARM 架构,一种广泛使用的精简指令集(RISC)架构,特别是在移动设备和嵌入式系统中。

  2. none: 这个部分通常用于指定厂商或特定的ARM变种。在这个上下文中,none 表示这不是为特定的ARM厂商或变种定制的编译器,而是一个通用的ARM架构编译器。然而,这个部分的确切含义可能会根据编译器的不同而有所不同,有时它也可能被解释为不针对特定的操作系统版本或环境。

  3. linux: 这部分指定了目标操作系统(target operating system)。在这个例子中,它表明编译器是为在Linux操作系统上运行的程序生成的代码。这意呀着编译器将遵循Linux的系统调用和库接口等约定。

  4. gnueabi: 这部分比较复杂,但它通常包含了几个子部分,用于进一步描述目标环境。在这个例子中,gnu 表示GNU项目,它是一系列自由软件的集合,包括GCC编译器。eabi(Embedded ABI,嵌入式应用二进制接口)指的是嵌入式系统的应用二进制接口,它定义了如何在嵌入式环境中调用函数、传递参数等。gnu 和 eabi 结合在一起,表明这是一个遵循GNU项目和嵌入式ABI规范的编译器。

  5. gcc: 这部分指的是GNU编译器集合(GNU Compiler Collection)中的C编译器。GCC是一个开源的编译器套件,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada和Go等。在这个命令中,gcc 指的是C语言的编译器。

综上所述,arm-none-linux-gnueabi-gcc 是一个用于在Linux系统上编译针对ARM架构的嵌入式系统的C语言程序的交叉编译器。这样的编译器允许开发者在一种类型的计算机上(比如x86_64的PC)为另一种类型的计算机(比如基于ARM的嵌入式设备)编译软件。

gcc-linaro-arm-linux-gnueabihf 

是一个针对 ARM 架构的交叉编译工具链的名称,通常用于在基于 x86 的系统(如个人电脑或服务器)上编译针对 ARM 架构的代码。下面是对这个名称每个部分的解释:

  1. gcc:表示这是一个 GCC(GNU Compiler Collection)编译器。GCC 是一个开源的编译器集合,支持多种编程语言,包括 C、C++、Java、Ada 和其他语言。它是 Linux 系统上最常用的编译器之一。

  2. linaro:表示这个 GCC 版本是由 Linaro 组织提供的。Linaro 是一个致力于开发开源软件在 ARM 架构上最佳运行的协作工程组织。

  3. arm:表示这个编译器是为 ARM 架构的目标系统编译代码的。ARM 是一种广泛使用的 RISC(精简指令集计算机)架构,特别是在移动设备(如智能手机和平板电脑)中。

  4. linux:表示目标操作系统是 Linux。这意味着编译出来的代码将在基于 Linux 的 ARM 系统上运行。

  5. gnueabihf:这是一个指定目标 ABI(应用程序二进制接口)的后缀,用于描述编译器的目标平台特性。

    • gnu:表示遵循 GNU 标准。
    • eabi:表示嵌入式应用程序二进制接口(Embedded ABI),这是一种针对嵌入式系统的标准化接口。
    • hf:表示硬浮点(Hard Float),这意味着浮点运算将由硬件直接支持,而不是通过软件模拟。

综上所述,gcc-linaro-arm-linux-gnueabihf 是一个针对 ARM 架构的 Linux 系统的交叉编译器,它遵循 GNU 标准,使用嵌入式应用程序二进制接口,并支持硬浮点运算。这样的编译器使得开发者可以在非 ARM 架构的系统上编译出能在 ARM 架构的 Linux 系统上运行的代码。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 『 Linux 』信号的写入与保存
  • java课程设计项目之图书管理系统
  • Android APP CameraX应用(02)预览流程
  • Linux权限维持篇
  • 创业团队如何选择DevOps工具?
  • 计算机网络知识-面试点1
  • 快速入门了解Ajax
  • 【前端学习】CSS三大特性
  • JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些
  • h265decode解码1080P的故障溯源 [ 2 - 1 ]
  • 力扣高频SQL 50题(基础版)第六题
  • Conda和Pip有什么区别?
  • 分布式系统常见软件架构模式
  • Http 和 Https 的区别(图文详解)
  • 在 ArchLinux 上编译运行 axmol 引擎
  • [笔记] php常见简单功能及函数
  • 【EOS】Cleos基础
  • 2017-09-12 前端日报
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Java IO学习笔记一
  • leetcode98. Validate Binary Search Tree
  • Linux Process Manage
  • Linux快速复制或删除大量小文件
  • MYSQL 的 IF 函数
  • Odoo domain写法及运用
  • 关于 Cirru Editor 存储格式
  • 诡异!React stopPropagation失灵
  • 容器服务kubernetes弹性伸缩高级用法
  • 转载:[译] 内容加速黑科技趣谈
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # 达梦数据库知识点
  • #14vue3生成表单并跳转到外部地址的方式
  • #define用法
  • #includecmath
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)(1.13) SiK无线电高级配置(六)
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (27)4.8 习题课
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (二)WCF的Binding模型
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)elasticsearch 源码之启动流程分析
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • ***通过什么方式***网吧
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .net 7 上传文件踩坑
  • .NET CORE Aws S3 使用
  • .NET Core Web APi类库如何内嵌运行?
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...