为 raspberry pi 交叉编译设置 Qt

Setup Qt for cross compile for raspberry pi

我想使用 Qt creator 将项目从我的 linux 机器交叉编译到 raspberry pi。现在我已经设置了一个带有编译器(我测试过它可以工作)和一个 sysroot 的工具包。但是,当我尝试在 Qt Creator 中编译一个简单的 "Hello world" 示例时,出现错误:

#include <iostream>

using namespace std;

int main()
{
    cout << "Hallo!!!" << endl;
    return 0;
}

/usr/include/c++/5/iostream:38: 来自 /usr/include/c++/5/iostream:38, ~/sysroot/usr/include/features.h:364: 错误: sys/cdefs.h: 没有那个文件或目录

我看到 Qt 尝试使用以下文件进行编译:

/usr/include/c++/5/iostream

但是它应该使用 ~/sysroot/usr/include/c++/6/iostream

在我使用的工具包中,我指定了 ~/sysroot 作为 sysroot,但它似乎使用了其他 c++ 包含。我该如何更改?

编辑:我找到了解决问题的方法。请参阅下面的答案。但是我不确定这是否是最好的解决方案。我有更好的方法,请告诉我。

我发现了问题。默认的 qmake 构建步骤将参数“-spec linux-g++”添加到对 qmake 的调用中。然而,这会导致选择错误的编译器。由于我无法从 qmake 构建步骤中删除参数,因此我删除了 qmake 步骤并添加了一个自定义构建步骤,该步骤调用 qmake 并省略了 -spec 参数。这似乎有效,但感觉有点脏。也许有 better/cleaner 个解决方案?