我目前正在尝试编译项目并将其移植到部署基于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位吗?
我很乐意为此提供一些帮助。 感谢。
答案 0 :(得分:1)
您的假设是正确的。您可以阅读类似的规格并创建自己的规格,这些非常简单。例如,Pi2是armv7设备,您可以从this qmake.conf开始。然后,传递给configure:
-device <given_name> -device-option CROSS_COMPILE=<path_and_prefix> -sysroot <your_sysroot>
只需更改路径,根据需要调整cflags等...然后按照构建教程。