OK,最后我设法解决这个问题。 Qt在通过源代码构建时有一些功能测试功能。如果主机上未安装某些开发包,则测试将失败并且该功能无法正常工作。在这种情况下,qt将使用虚拟后端,所以示例应用程序仍然可以编译成OK并运行,但没有任何实际用法。 (我已经列出了比需要更多的安装,以防万一)如果你使用的是蓝牙,那么你需要的软件包包括:蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙,蓝牙, ,请确保将所有这些安装在主机之前。
我已经做好了所有的准备工作后,我跑配置脚本生成的Makefile的Qt。这是配置脚本使用:
#!/bin/sh
./configure \
-v \
-prefix /opt/qt-5.7.0 \
-release \
-opensource \
-xplatform linux-arm-gnueabi-g++ \ # yes, I need to cross-compile
-qt-sql-sqlite \
-qt-zlib \
-qt-pcre \
-no-opengl \
-no-sse2 \
-no-openssl \
-qt-freetype \
-nomake examples \
-nomake tests \
-no-separate-debug-info \
-no-qml-debug \
-pkg-config \
-confirm-license
运行配置脚本后,你会得到下yourQtSourcePath/qtbase /箱/年的qmake可执行文件,那么你就可以测试你的qtbluetooth功能被执行:
qtSourcePath/qtbase/bin/qmake qtSourcePath/qtconnectivity/qtconnectivity.pro
如果你看到这样的:
Checking for bluez... yes
Checking for bluez_le... yes
Checking for linux_crypto_api... yes
,那么你是好去,只是让& & make install的整个Qt的源,qt蓝牙现在可以正常工作。
编辑:
如果以任何方式,你无法通过蓝牙测试(这是很可能的,当你需要交叉编译,就像我的情况),我想出了一个解决方法。您仍然必须在make之前安装所有必需的dev-packages,这次为了通过蓝牙功能测试,您可以使用您的系统内置的qmake(apt-get install qt5-qmake,NOT您生成的qmake通过运行配置脚本)来使用qtconnectivity.pro。这样,您就可以通过蓝牙功能测试并为qtconnectivity模块生成一个Makefile。
修改Makefile,更改QMAKE参数。在我而言,这是结果:
- QMAKE = /usr/lib/x86_64-linux-gnu/qt5/bin/qmake
+ QMAKE = /opt/qt-everywhere-opensource-src-5.7.0/qtbase/bin/qmake
然后,您可以交叉编译通过使& &使安装整个的Qt源。
我测试了解决方法,示例应用程序(heartRate服务器)现在可以正常工作。令人讨厌的消息“qt.bluetooth:虚拟后端运行。Qt蓝牙模块无功能”消失了:)