如何为Raspberry Pi交叉编译Qt Quick应用程序?

时间:2016-03-16 12:05:51

标签: qt raspberry-pi cross-compiling

我成功地为Raspberry Pi交叉编译了“标准”Qt应用程序(QT += core gui),但我在使用Qt Quick(QT += quick)时遇到了同样的问题。

我安装了cross-compiling tool-chain并成功compiled Qt with it,我的Qt GUI应用程序现在可以在Raspberry Pi上运行。

现在我尝试在Raspberry Pi上运行其中一个Qt Quick示例,但没有成功。我打开欢迎/示例中的示例,我可以使用Debian在我的PC上成功构建和运行它们,但如果我尝试为Raspberry Pi构建它(通过添加我用于常规Qt应用程序的相同工具包),它不会甚至编译。它给出了以下错误:

:-1: error: Unknown module(s) in QT: quick

这似乎表明Qt Quick不属于我的Qt版本。

我再次检查了交叉编译器的配置方式:

Building on:   linux-g++ (x86_64, CPU features: mmx sse sse2)
Building for:  devices/linux-rasp-pi-g++ (arm, CPU features: none detected)
Platform notes:

            - Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx

Build options:
  Configuration .......... accessibility audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile dbus egl eglfs eglfs_brcm enable_new_dtags evdev eventfd freetype full-config getaddrinfo getifaddrs harfbuzz iconv inotify ipv6ifname large-config largefile linuxfb medium-config minimal-config mremap nis no-pkg-config opengl opengles2 pcre png posix_fallocate precompile_header qpa qpa reduce_exports release rpath shared small-config system-zlib threadsafe-cloexec 
  Build parts ............  libs
  Mode ................... release
  Using sanitizer(s)...... none
  Using C++ standard ..... c++11
  Using gold linker....... no
  Using new DTAGS ........ yes
  Using PCH .............. yes
  Target compiler supports:
    Neon ................. no

Qt modules and options:
  Qt D-Bus ............... yes (loading dbus-1 at runtime)
  Qt Concurrent .......... yes
  Qt GUI ................. yes
  Qt Widgets ............. yes
  Large File ............. yes
  QML debugging .......... yes
  Use system proxies ..... no

Support enabled for:
  Accessibility .......... yes
  ALSA ................... no
  CUPS ................... no
  Evdev .................. yes
  FontConfig ............. no
  FreeType ............... yes (bundled copy)
  Glib ................... no
  GStreamer .............. no
  GTK theme .............. no
  HarfBuzz ............... yes (bundled copy)
  Iconv .................. yes
  ICU .................... no
  Image formats: 
    GIF .................. yes (plugin, using bundled copy)
    JPEG ................. yes (plugin, using bundled copy)
    PNG .................. yes (in QtGui, using bundled copy)
  libinput................ no
  Logging backends: 
    journald ............... no
    syslog   ............... no
  mtdev .................. no
  Networking: 
    getaddrinfo .......... yes
    getifaddrs ........... yes
    IPv6 ifname .......... yes
    libproxy.............. no
    OpenSSL .............. no
  NIS .................... yes
  OpenGL / OpenVG: 
    EGL .................. yes
    OpenGL ............... yes (OpenGL ES 2.0+)
    OpenVG ............... no
  PCRE ................... yes (bundled copy)
  pkg-config ............. no 
  PulseAudio ............. no
  QPA backends: 
    DirectFB ............. no
    EGLFS ................ yes
      EGLFS i.MX6....... . no
      EGLFS KMS .......... no
      EGLFS Mali ......... no
      EGLFS Raspberry Pi . yes
      EGLFS X11 .......... no
    LinuxFB .............. yes
    Mir client............ no
    XCB .................. no
  Session management ..... yes
  SQL drivers: 
    DB2 .................. no
    InterBase ............ no
    MySQL ................ no
    OCI .................. no
    ODBC ................. no
    PostgreSQL ........... no
    SQLite 2 ............. no
    SQLite ............... yes (plugin, using bundled copy)
    TDS .................. no
  tslib .................. no
  udev ................... no
  xkbcommon-x11........... no
  xkbcommon-evdev......... no
  zlib ................... yes (system library)

Qt Quick甚至没有出现在选项列表中。这是否意味着交叉编译器不支持它?选项“QML调试”让我觉得它应该是,因为如果不是Qt Quick,还应该使用QML。

OpenGL 2.0处于活动状态,因此不应该是问题。

2 个答案:

答案 0 :(得分:1)

由于我的PC确实有一个Qt5Quick库,而且Raspberry Pi上没有这个名字的库,所以它似乎根本就没有建成。

指南按依赖顺序列出了可选模块,但它们还不够。

构建qtquickcontrolsqtquick2后,问题就解决了。

安装了SD卡的图像,

cd ~/opt/qt5/qtquickcontrols
/usr/local/qt5pi/bin/qmake .
make -j4
sudo make install

等等。然后将图像写回SD卡,并且可以在Raspberry Pi上运行Qt Quick(即使只是全屏)。

答案 1 :(得分:0)

我在Raspberry 3上成功使用了QtRpi脚本。您可以在http://www.qtrpi.com下载它,它是一个随时可用的工具,可以在Linux主机上安装交叉编译工具链,并在Rpi上安装完整的部署环境。 / p>

我将它与Qt Quick一起用于我的应用程序,它运行没有任何问题。