首页 文章

交叉编译Raspberry pi 2错误

提问于
浏览
2

我想在Ubuntu 32bit(在虚拟框中)开始交叉编译raspberry 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文件都被处理掉了,所以应该识别文件格式,对吗?有人能指出我在正确的方向吗?谢谢!

3 回答

  • 1

    我会建议你做交叉编译的替代方法 . 我尝试了它,它的工作原理 . 你可以使用crosstool-NG . 它为您提供了以图形方式设置工具链以进行交叉编译 . 设置工具链有很多选项 . 你可以探索一下 .

    现在你正在为 ARM-RPi 做,但明天如果你的目标CPU发生了变化,那么很容易再次重新配置工具链 .

    您可以在this article中找到简单的步骤 . 我希望这适合你 .

  • 3

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

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

    当我查看libc.so.6时,我看到一行包含:libc-2.13.so

    我刚碰到这个 . 这个问题比你想象的要简单 . 当您解开并解压缩工具链时,发生的事情是libc.so.6成为文本文件 . 它应该是指向正确文件“libc-2.13.so”的“符号链接”文件 .

    如果您使用的是Windows和7-Zip,请确保在启动7-zip时单击“以AS管理员身份运行” . 如果只是拖放,错误就不那么明显了 .

相关问题