交叉编译工具链

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨😸✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

本地编译

例如,我们通常在x86的平台上编译在Windows操作系统运行的程序

交叉编译

在一个平台上编译出可在另一个平台上运行的可执行代码。这个平台包含两个概念:体系结构和操作系统。

目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC来完成,因此称为交叉编译,并出现了交叉编译器。

交叉编译器是指运行在宿主机(Host)上,可用来编译源程序,然后生成针对特定目标平台(target)的代码的编译器。

目标硬件和宿主PC之间一般通过串口、并口或以太网接口建立连接关系。

交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc三个部分组成。有时出于减少libc库大小的考虑,也可以使用其他C库代替glibc。在完整的交叉编译工具链中通常还会包含调试器,如gdb。

1. 交叉编译工具链命名规则

具体示例解析

  • gcc-arm-linux-gnueabihf

    • arm: 目标架构(ARM)

    • linux: 目标操作系统

    • gnueabihf: GNU EABI 硬浮点

      • gnu: GNU工具链

      • eabi: 嵌入式应用二进制接口

      • hf: 硬浮点(hard float)

  • 其他常见变体

    • arm-linux-gnueabi: 软浮点

    • aarch64-linux-gnu: 64位ARM

    • arm-none-eabi: 无操作系统,用于裸机程序

2. 下载和安装

下载来源

# ARM官方工具链
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain

# Linaro工具链
https://www.linaro.org/downloads/

# 包管理器安装(Ubuntu/Debian)
sudo apt-get install gcc-arm-linux-gnueabihf

直接使用包安装。

🔧 验证安装与基本使用

验证安装:--version

测试:

        生成一个可以在ARM架构设备上运行的可执行文件 hello

检查:使用 file 命令检查生成的可执行文件,确认它是针对ARM架构的

🛠️ 配置环境变量(可选)

虽然在大多数情况下不需要,但如果你希望更便捷地使用交叉编译工具链,或者在脚本、Makefile中明确指定,可以设置环境变量。

  • 临时设置(仅在当前终端会话有效):

export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++

之后,你就可以直接使用 $CC 来编译C程序了

永久设置:可以将上面的 export 行添加到你的 ~/.bashrc 文件中,然后执行 source ~/.bashrc 使其生效

✨✨✨✨✨✨✨✨✨✨✨✨✨✨😸✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值