jf101 发表于 2025-7-31 13:14

ARM交叉编译



所谓交叉编译可以理解为在一类机器上编写(源代码)、编译得到可执行程序(通常是PC机),在另一类机器上运行(比如arm设备),这是嵌入式和非嵌入式的一个很大的区别。之所以用交叉编译,是因为

(1)嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。

(2)交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和应用级软件)。

由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)将可执行程序加载到目标嵌入式设备上运行及调试。

公羊子丹 发表于 2025-7-31 17:26

交叉编译器比如arm-none-eabi-gcc和arm-linux-gnueabihf-gcc这俩常用,你们用哪个多点?

周半梅 发表于 2025-7-31 17:27

讲得挺清楚的,我第一次搞交叉编译就是踩在“可执行文件不能跑”的坑上了……

帛灿灿 发表于 2025-7-31 17:27

想问下大佬,你是怎么调试的?我一直在用串口打印+gdb远程。

童雨竹 发表于 2025-7-31 17:28

有时候不同的glibc版本也会有问题,目标机系统老一点就得注意兼容。

万图 发表于 2025-7-31 17:29

如果目标板支持nfs挂载,真心方便,改完代码直接就能跑。

Wordsworth 发表于 2025-7-31 17:30

推荐个buildroot,做交叉编译环境和根文件系统真省事。

Bblythe 发表于 2025-7-31 17:30

想起来我之前在Windows上用WSL搭建交叉环境,还挺折腾的。

Pulitzer 发表于 2025-7-31 17:31

JTAG调试虽然慢点,但调裸机程序太香了,直接断点单步。

Uriah 发表于 2025-7-31 17:32

有没有推荐的交叉调试教程?我gdb那部分还是懵懵的。

Clyde011 发表于 2025-7-31 17:32

请问一下,如果目标是Cortex-A53,交叉工具链是不是得选aarch64的?
页: [1]
查看完整版本: ARM交叉编译