从64位Linux交叉编译特定arm目标的Qt

时间:2017-09-20 15:30:07

标签: c++ linux qt arm

我目前正在尝试编译项目并将其移植到部署基于Linux的系统的32位目标。

我的主机运行x86_64 Debian Stretch,我的目标是运行自定义Linux的Atmel SAMA5d2。 我的交叉工具链是从buildroot生成的。

目前,我可以使用buildroot生成的工具链交叉编译目标应用程序。但是,我想整合Qt并为目标构建Qt应用程序。

为了能够为目标平台构建我的应用程序,我需要为我的目标编译Qt。 为此,我必须告诉Qt使用buildroot工具链而不是本机工具链。

根据我的发现,我必须提供-device <device> --device-option CROSS_COMPILE=$TOOLCHAIN_PATH-xplatform <mkspec>来配置带有预期工具链的Qt。

显然我的目标不在qtbase/mkspecs/devices下的设备列表中,所以我认为最好的解决方案是为我的目标创建一个mkspec。

我的命令应如下所示:

./configure -xplatform <my_mkspec> -embedded arm -prefix <customQtPath>

然而,我有点失落,我不知道该怎么做只是从文档和我通过谷歌搜索我的问题找到的。
我还需要指定目标是32位,因为armv7只有32位吗?

我很乐意为此提供一些帮助。 感谢。

1 个答案:

答案 0 :(得分:1)

您的假设是正确的。您可以阅读类似的规格并创建自己的规格,这些非常简单。例如,Pi2是armv7设备,您可以从this qmake.conf开始。然后,传递给configure:

-device <given_name> -device-option CROSS_COMPILE=<path_and_prefix> -sysroot <your_sysroot>

只需更改路径,根据需要调整cflags等...然后按照构建教程。