无法为 Raspberry Pi 交叉编译 C 程序

Can't cross-compile C program for Raspberry Pi

我正在尝试使用 crostool-ng 为我的 Raspberry Pi 3b+ 交叉编译 C 代码。我正在使用 M1 芯片 Mac 并尝试在 Ubuntu 虚拟 Machine(Parallels) 中交叉编译我的代码。 我使用 buildroot 编译了我自己的内核,并使用 crostool-ng. x-tools 创建了一个工具链,这是我在 //home/parallels/x-tools 创建的工具链,我正在尝试交叉编译一个简单的代码只是打印 Hello World 位于我的桌面。我试过 arm-unknown-linux-gnueabi-gcc -o deneme test.c 并得到了这个:deneme: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 5.12.12, with debug_info, not stripped 文件。如果我将它发送到我的目标 rasppi 并尝试使用 ./deneme 运行 它,我会收到此错误:-sh: ./deneme: not found 。我确定它们在同一目录中。现在,我正在使用 aarch64 但我尝试使用 armv71 但它也没有用。如果这还不够,请询问更多信息。

我的Raspberry Pi型号:3b+。

宿主Machine:Macm1芯片。

Raspberry Pİ ARM:AArch 64(小字节序)

Crosstool-ng 工具链选项:

目标架构:ARM

字节序:小字节序

位数:32

操作系统:Linux

好的,我找到了解决办法。就像我说的,如果我 运行 这个命令:arm-unknown-linux-gnueabi-gcc -o deneme test.c 我会得到下面的文件 deneme: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 5.12.12, with debug_info, not stripped 正如你所看到的,这个文件是动态 linked 的。我们需要添加 -static 这样我们就可以静态地 link 。最终的解决方案是: arm-unknown-linux-gnueabi-gcc -static -o deneme test.c