我有一个过程,我已经使用了很多年来交叉编译beaglebone black的应用程序。我上次使用的下载是
GCC-Linaro的臂-Linux的gnueabihf-4.9-2014.09_linix
我有几个有效的程序,但我最近有更多的创意,所以我决定升级到新的工具链,所以我下载并安装了:
GCC-Linaro的-5.2-2015.08-x86_64_arm-Linux的gnueabihf
现在即使是最简单的文件也无法编译。
编译器声称无法找到features.h。
我认为这可能是来自beaglebone的文件。果然,所以我从beaglebone带来了它,现在它抱怨它找不到bits / predefs.h。该文件也在beaglebone上,但我严重怀疑这是我应该做的。
有没有办法解决这个问题?
我在64位操作系统上使用Ubuntu 14.04 LTS。
修改详情:
如果我的程序什么都不做,只有
#include <iostream>
int main()
{
return 0;
}
make的输出是 /usr/local/arm/arm-linux-gnueabihf/include/c++/5.2.1/features.h:323:26:致命错误:bits / predefs.h:没有这样的文件或目录
如果我注释掉#include
输出是:
arm-linux-gnueabihf-g ++ -L / usr / local / lib / arm -L / usr / local / arm / lib -o“FTDTest”./ src / FTDTest.o
/usr/local/arm/bin/../lib/gcc/arm-linux-gnueabihf/5.2.1/../../../../arm-linux-gnueabihf/bin/ld:找不到crt1.o:没有这样的文件或目录
/usr/local/arm/bin/../lib/gcc/arm-linux-gnueabihf/5.2.1/../../../../arm-linux-gnueabihf/bin/ld:找不到crti.o:没有这样的文件或目录
/usr/local/arm/bin/../lib/gcc/arm-linux-gnueabihf/5.2.1/../../../../arm-linux-gnueabihf/bin/ld:找不到-lm
解决方案: 问题是工具链中的sysroot没有指向正确的目录。由于我无法在不重建工具链的情况下更改sysroot,因此我将sysroot的目录移动到sysroot指向的目录,它就像一个魅力。这不是最好的解决方案,但它会让我过去。