qt使用交叉编译配置问题:device和xplatform

时间:2017-06-13 19:00:48

标签: qt raspberry-pi qt5 cross-compiling

我正在尝试为raspberry pi计算模块交叉编译最新的Qt(版本5.9)。我对此很新,但发现本指南非常有用:https://visualgdb.com/tutorials/raspberry/qt/embedded/

我按照说明进行了操作,但是在配置qt时,我按照指南中的建议使用了以下命令(我已经用5.9替换了5.5版本):

../qt-everywhere-opensource-src-5.9.0/configure -platform win32-g++ -xplatform linux-arm-gnueabi-g++ -release -opengl es2 -device linux-rasp-pi2-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5

在我的情况下,这会引发错误,我无法同时指定xplatformdevice参数。我是新手,我不确定应该指定哪一个!

1 个答案:

答案 0 :(得分:3)

当您为配置选择 mkspec 时,您可以选择-platform的主机平台,或者在交叉编译时,您可以选择-xplatform的目标平台。对特定支持的设备进行交叉编译时,请选择带有-device的mkspec。您可以使用-device-option标志为特定设备提供选项。使用-device标志时,不要使用-xplatform标志。

在Qt中,似乎有一个用于Raspberry Pi 2的设备mkspec。你可以在Qt源代码树中的qtbase模块中找到Qt mkspec,例如Raspberry Pi 2 mkspec:qt-everywhere-opensource-src-5.9.0/qtbase/mkspecs/devices/linux-rasp-pi2-g++

Qt wiki中有Raspberry Pi Beginners Guide可能会有所帮助。它说你最初应该构建qtbase然后逐个编译其他模块。在wiki中有一个示例配置命令,用于Raspberry Pi 2(在Linux主机环境中),它使用-device-device-option标志:

./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5pi -hostprefix /usr/local/qt5pi
make -j 4
sudo make install