我目前正在尝试编译一个项目,并将其移植到一个部署基于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位?
我很高兴在这方面能得到一些帮助。谢谢。
发布于 2017-09-21 00:14:43
你的假设是正确的。您可以阅读类似的规范并创建自己的规范,这些都非常简单。例如Pi2是一个armv7设备,你可以从this qmake.conf开始。然后,传递到configure:
-device <given_name> -device-option CROSS_COMPILE=<path_and_prefix> -sysroot <your_sysroot>只需更改路径,在需要时调优cflag等。然后按照构建教程进行操作。
https://stackoverflow.com/questions/46326172
复制相似问题