无法为 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
我正在尝试使用 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