我想为树莓派交叉编译一个程序。我决定使用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)
^
还有更多相同类型的东西...
有人知道那里出了什么问题吗?
感谢您的帮助!
答案 0 :(得分:2)
也许您的包含路径缺少(正确的)features.h
使用Qt 5.15为Raspberry Pi交叉编译QTCreator时,遇到了相同的错误。
在pro文件中添加INCLUDEPATH += somepath/sysroot/usr/include
进行了修复。也就是说,将目标计算机的/usr/include
添加到您的包含路径。 (当然,请在您的系统上使用正确的sysroot路径...)