✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨😸✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
本地编译
例如,我们通常在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 使其生效
✨✨✨✨✨✨✨✨✨✨✨✨✨✨😸✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
1411

被折叠的 条评论
为什么被折叠?



