如何解决无法为 Raspberry Pi 交叉编译 C 程序
我正在尝试使用 crostool-ng
为我的 Raspberry Pi 3b+ 交叉编译 C 代码。我正在使用 M1 芯片 Mac 并尝试在 Ubuntu 虚拟机(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
并且它也不起作用。如果这还不够,请询问更多信息。
我的树莓派型号:3b+。
主机:Mac m1 芯片。
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
你可以看到这个文件是动态链接的。我们需要添加 -static
以便我们可以静态链接。最终的解决方案是:arm-unknown-linux-gnueabi-gcc -static -o deneme test.c
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。