为 Raspberry Pi 选择交叉编译器

Posted

技术标签:

【中文标题】为 Raspberry Pi 选择交叉编译器【英文标题】:Selecting cross compiler for Raspberry Pi 【发布时间】:2020-12-11 18:34:21 【问题描述】:

寻找可以帮助我在我的 Ubuntu 20.04 机器上为 Raspberry Pi 构建应用程序的交叉编译器。我找到了official tools on Github,并且我认为该文件夹arm-bcm2708 包含交叉编译器:

arm-bcm2708hardfp-linux-gnueabi
arm-bcm2708-linux-gnueabi
arm-linux-gnueabihf -> arm-rpi-4.9.3-linux-gnueabihf
arm-rpi-4.9.3-linux-gnueabihf
gcc-linaro-arm-linux-gnueabihf-raspbian
gcc-linaro-arm-linux-gnueabihf-raspbian-x64

我很困惑目录名称试图告诉我什么?我知道以下单词:

arm - processor type used on Pi
bcm2708 - processor model used on pi
gnueabi - cross-compiler for armel architecture (you can build binary for ARM on PC)
linaro - company that creates multimedia for ARM
4.9.3 - I suppose is GCC compiler version (why it is so old?)

我应该为我的 Pi3 和 Pi4 使用哪种编译器?

【问题讨论】:

为什么不在 RPi 上构建?太慢了? 【参考方案1】:

您可以将工具链之一provided by ARM 用于您的 RPI3/4。 如果您在 RPI3/4 上运行 32 位 Linux,请使用 arm-none-linux-gnueabihf 工具链之一,如果在 RPI3/4 上运行 64 位 Linux,请使用 aarch64-none-linux-gnu 之一。

这两个工具链的 10.2 和 9.2 版本在我自己的 Ubuntu 20.04.1 LTS x86_64 系统上运行良好。当然,您可以使用arm-none-linux-gnueabihf 工具链交叉编译程序,并在您的 RPI3/4 上运行的 64 位 Linux 上运行它们。

【讨论】:

我想如果我运行 64 位 Linux 我仍然可以使用 32 位工具链 arm-none-linux-gnueabihf ? 我扩充了我的答案,以便(希望)消除歧义。 您能否详细说明如何在您的系统上设置提取的工具以使它们可用。我想用 Eclipse 来做这个,所以想知道如何设置路径或者你是否安装到主文件系统中。

以上是关于为 Raspberry Pi 选择交叉编译器的主要内容,如果未能解决你的问题,请参考以下文章

构建GCC作为Raspberry-Pi的交叉编译器

为 ARM6 交叉编译 Node.js (Raspberry Pi)

Raspberry pi opencv 链接问题的交叉编译

QtCreator 从 Win 交叉编译 Raspberry Pi,发出远程运行应用程序

嵌入式AI使用tvm交叉编译和RPC部署在raspberry pi和rk3399教程

交叉编译C++树莓派标准错误