交叉编译 Raspberry pi 2 错误

Cross compiling for Raspberry pi 2 error

我想开始在 Ubuntu 32 位(在虚拟框中)上对树莓派 pi2 进行交叉编译,所以我在 github 站点 (https://github.com/raspberrypi/tools) 下载了工具链并尝试使用命令编译一个简单的 hello world 程序(我已经将包含 arm-linux-gnueabihf-gcc-4.8.3 的 bin 文件夹的路径包含到 PATH 变量中。):

arm-linux-gnueabihf-gcc-4.8.3 HelloWorld.c

但是,我总是收到以下错误消息:

path/to/the/linker/in/the/toolchain/ld:/path/to/the/libc.so.6file/in/the/toolchain/libc.so.6: file format not recognized; treating as linker script

随后出现语法错误。 当我查看 libc.so.6 时,我看到一行包含:

libc-2.13.so

libc-2.13.so 文件与 libc.so.6 文件位于同一文件夹中。当我调用

file libc-2.13.so

我得到:

libc-2.13.so: ELF 32-bit LSB  shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=dbd0cdca5a677bea1417be1272f4c5ef43bd3e22, for GNU/Linux 2.6.26, stripped

我不知道是什么导致了这个错误,因为显然工具链中的链接器和工具链中的 libc.so.6 文件都经过处理,所以应该可以识别文件格式,对吗? 有人可以在这里指出我正确的方向吗?谢谢!

我会建议您使用其他方法进行交叉编译。我试过了,它有效。您可以使用 crosstool-NG。它为您提供图形方式来设置交叉编译的工具链。设置工具链有很多选项。你可以探索一下。

现在您正在为 ARM-RPi 做,但明天如果您的目标 CPU 发生变化,那么重新配置工具链将非常容易。

您可以在 this article 中找到简单的步骤。我希望这对你有用。

在我的第一次努力中,我必须在命令中包含 gcc 的路径。然后我就在树莓派上编译了程序。

  ~/toolchain/raspbian-toolchain-gcc-4.7.2-linux32/bin/arm-linux-gnueabihf-gcc whets.c 

When I look into libc.so.6, I see a single line containing: libc-2.13.so

我只是 运行 喜欢这个。 问题比你想象的要简单得多。当您 un-gz 解压工具链时,libc.so.6 变成了一个文本文件。它应该是指向正确文件 "libc-2.13.so".

的 "symbolic link" 文件

如果您正在使用 windows 和 7-Zip,请确保在启动 7-zip 时单击 "Run AS Administrator"。如果只是简单地拖放,错误就没有那么明显了。