ARM&Linux环境搭建
+ -

交叉编译工具链arm-linux-gnueabihf-gcc

2025-07-25 114 0

GCC ARM Linux GNUEABIHF 工具链详细介绍

gcc-arm-linux-gnueabihf 是一个针对 ARM 架构的交叉编译工具链,专门用于在 x86/x86_64 主机上开发运行在 ARM Linux 系统上的应用程序。这个工具链名称中的各部分含义如下:

  • gcc: GNU Compiler Collection
  • arm: 目标架构为 ARM
  • linux: 目标系统为 Linux
  • gnueabihf: GNU EABI Hard Float (使用硬件浮点单元的嵌入式应用二进制接口)

主要组件

这个工具链包含以下主要组件:

  1. 编译器arm-linux-gnueabihf-gcc (C 编译器)
  2. C++ 编译器arm-linux-gnueabihf-g++
  3. 汇编器arm-linux-gnueabihf-as
  4. 链接器arm-linux-gnueabihf-ld
  5. 二进制工具arm-linux-gnueabihf-objcopy, arm-linux-gnueabihf-objdump
  6. 调试器arm-linux-gnueabihf-gdb
  7. 标准 C 库:针对 ARM 架构优化的 glibc 或 uClibc

特点

  1. 硬件浮点支持 (hf)

    • 使用 ARM 处理器的硬件浮点单元 (VFP)
    • 提供比软件浮点更高效的浮点运算性能
    • 生成使用硬件浮点指令的代码
  2. ABI 兼容性

    • 遵循 ARM EABI (嵌入式应用二进制接口)
    • 与 ARM Linux 发行版兼容
  3. 交叉编译能力

    • 允许在 x86/x86_64 主机上编译 ARM 架构的代码
    • 生成的二进制文件可直接在 ARM Linux 系统上运行

ARM 工具链的比较

  1. arm-linux-gnueabi:

    • 软件浮点实现
    • 兼容性更广 (支持不带 FPU 的 ARM 芯片)
    • 性能较低
  2. aarch64-linux-gnu:

    • 针对 ARM 64位架构 (ARMv8/AArch64)
    • 不兼容 32位 ARM 系统

在 Ubuntu/Debian 上安装

sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabihf

指定版本下载安装

官方下载地址:https://releases.linaro.org/components/toolchain/binaries/

当前目录下安装

wget https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

tar -xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
export PATH=$PATH:$(pwd)/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz/bin

或者安装到指定目录usr/local/arm/下,并修改PATH环境变量

sudo mkdir /usr/local/arm
cd  /usr/local/arm
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

修改环境变量

sudo vi /etc/profile
export PATH=$PATH:usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz/bin

保存后,重启系统,就可以了。

其它库

使用交叉编译器之前还需要安装一下其它的库

sudo apt-get install lsb-core lib32stdc++6
  • lsb-core:Linux Standard Base Core,提供一组核心的、标准化的运行时环境。
  • lib32stdc++6:64位的Linux系统提供运行32位 C++ 程序所需的标准 C++ 运行时库。

卸载

sudo apt-get remove arm-linux-gnueabihf

或者

zzmt@zzmt:~/Desktop/images/files$ which arm-linux-gnueabihf-gcc 
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

找到目录后,删除整个目录

rm -rf arm-linux-gnueabihf-gcc*

0 篇笔记 写笔记

交叉编译工具链arm-linux-gnueabihf-gcc
GCC ARM Linux GNUEABIHF 工具链详细介绍gcc-arm-linux-gnueabihf 是一个针对 ARM 架构的交叉编译工具链,专门用于在 x86/x86_64 主机上开发运行在 ARM Linux 系统上的应用程序。这个工具链名称中的各部分含义如下:gcc: GNU C......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!