C Raspberry pi 2错误的交叉编译

C Raspberry pi 2错误的交叉编译,c,gcc,raspberry-pi,cross-compiling,raspberry-pi2,C,Gcc,Raspberry Pi,Cross Compiling,Raspberry Pi2,我想在Ubuntu 32位上开始raspberry pi2的交叉编译(在虚拟盒中),所以我在github站点()上下载了工具链,并尝试用命令编译一个简单的hello world程序(我已经将包含arm-linux-gnueabihf-gcc-4.8.3的bin文件夹的路径包含在path变量中): 但是,我始终会收到以下错误消息: path/to/the/linker/in/the/toolchain/ld:/path/to/the/libc.so.6file/in/the/toolchain/l

我想在Ubuntu 32位上开始raspberry pi2的交叉编译(在虚拟盒中),所以我在github站点()上下载了工具链,并尝试用命令编译一个简单的hello world程序(我已经将包含arm-linux-gnueabihf-gcc-4.8.3的bin文件夹的路径包含在path变量中):

但是,我始终会收到以下错误消息:

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文件是经过处理的,所以应该识别文件格式,对吗?
有人能给我指一下正确的方向吗?谢谢

我将向您推荐另一种交叉编译的方法。我试过了,效果很好。你可以用。它为您提供了图形化的方法来设置交叉编译的工具链。设置工具链有很多选项。你可以探索一下

现在您正在为ARM RPi进行操作,但是明天如果您的目标CPU发生了变化,那么重新配置工具链将非常容易


您可以找到中给出的简单步骤。我希望这对您有用。

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

  ~/toolchain/raspbian-toolchain-gcc-4.7.2-linux32/bin/arm-linux-gnueabihf-gcc whets.c 
当我查看libc.so.6时,我看到一行包含: libc-2.13.so

我刚碰到这个。 问题比你想象的要简单得多。当您取消gz和untar工具链时,所发生的是libc.so.6变成了一个文本文件。它应该是一个“符号链接”文件,指向正确的文件“libc-2.13.so”


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

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,仅链接的答案可能会无效。@Shadwell:我是这个论坛的新手。我编辑了我的答案。你能告诉我,可以吗?@Shadwell:谢谢@Amol从一开始使用它可能会更方便。BR已经提供了RPi2目标。谢谢大家的建议,用buildroot完成它最终成功了!我认为您缺少链接路径,因此链接器尝试链接系统的libc而不是工具链。尝试添加
-L
选项来指定工具链的库。您好,谢谢您的评论!我已经尝试将-I和-L标志放在工具链的适当位置(libc/lib和include),但仍然得到相同的错误。。。但是,由于我在PATH中包含了工具链作为第一个位置,它已经使用了正确的libc.so文件(libc文件的路径也包含在错误消息中),您有什么进一步的建议吗?使用-v选项编译以查看实际使用的链接器命令。您好!我试图在编译时提供绝对路径(我也尝试在-I和-L标志中使用绝对路径),但仍然是:相同的错误。。。不过还是要谢谢你的回答!
  ~/toolchain/raspbian-toolchain-gcc-4.7.2-linux32/bin/arm-linux-gnueabihf-gcc whets.c