交叉编译树莓派

时间:2018-09-05 15:23:04

标签: c++ gcc arm g++ cross-compiling

我想为树莓派交叉编译一个程序。我决定使用arm-linux-gnueabihf-gcc-7编译器,将/ usr和/ lib /复制到我的主机到目录〜/ raspberrypi / rootfs并设置一个配置如下的cmake:

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)

SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/raspberrypi/rootfs)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

# Specify the cross compiler
SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc-7)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++-7)

一切正常,直到我运行make,然后出现错误:

/usr/arm-linux-gnueabihf/include/sys/cdefs.h:467:49: error: missing binary operator before token "("
#if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5)
                                                 ^

还有更多相同类型的东西...

有人知道那里出了什么问题吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

也许您的包含路径缺少(正确的)features.h

使用Qt 5.15为Raspberry Pi交叉编译QTCreator时,遇到了相同的错误。

在pro文件中添加INCLUDEPATH += somepath/sysroot/usr/include进行了修复。也就是说,将目标计算机的/usr/include添加到您的包含路径。 (当然,请在您的系统上使用正确的sysroot路径...)