Important: Please read the Qt Code of Conduct -

Qt Setup for Embedded Arm board (Orange Pi One)

  • My task is to develop a full-screen 'kiosk' style application that will run on an embedded Linux board.

    To keep costs down, I've chosen to use an Orange Pi One running Armbian Xenial

    Qt seemed like a good choice for development due to its superior capabilities compared to other alternatives I could think of such as tkinter. Further to this, I would like to configure Qt creator to streamline development.

    I have a laptop running both Windows 10 (x64) and Ubuntu 16.04 (x64). I am developing for an embedded linux machine so it makes sense to me to use ubuntu for development.

    I have quite a bit of experience using Linux but seem to be out of my depth configuring cross-compilation between my laptop and the Orange Pi One

    So far Ive tries multiple versions of Qt (4.8.6 and 5.11) and tried to use information from here to build for an allwinner H3 device (mali 400) that the Orange Pi One is based on. here

    From what I can see the installation process should be as follows:

    Install Qt on Host machine (laptop)
    Install Qt creator on host machine
    Install embedded system toolchain on host machine

    Install Qt on embedded machine

    I notice that in guides like this

    They mention multiple config options as follows:

    ./configure -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=$TOOLCHAIN/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot $ROOTFS -prefix /usr/local/qt5

    How am I meant to know what these options are for my arm board?

    What is the correct install procedure to get cross compiling working and how can I obtain the toolchain / requirements I need for my board?

    Any help appreciated,


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Usually the tool chain is provided by the board constructor or at least they should point you to what you should be using.

    As for the Qt options, if not already existing, you can copy a mkspec that matches your board closely and modify it with the options that would make it work the best there like cpu type / architecture etc.

  • Thanks for your quick reply,

    apologies for my lack of knowledge, Im an electronics guy in a software world!

    From what I understand the toolchain should comprise

    Compiler (I have g++ for arm found here)
    Debugger (Not too sure what to use for this)
    Qt Version (Id like to use the most recent Qt version)

    What do you mean by the mkspec / where can I find it?


  • Lifetime Qt Champion

    In this case, the tool chain is the compiler/linker/binutils combination to build application for your target. The usual debugger is gdb for Linux.

    It's the content of the mkspecs folder in your Qt installation. For example under the device subfolder, You'll find the linux-rasp-pi2-g++ that is used by the -device linux-rasp-pi2-g++ option you passed to the configure script.

  • I understand the toolchain part now, Im fairly sure I have the right files for that,

    But when you say about the mkspecs folder in my installation, Is that the Qt installation on the host machine, embedded machine or something else? Wouldn't I need those mkspecs to obtain a Qt installation?

    Apologies for the confusion

  • Lifetime Qt Champion

    @andyowenwest Your host Qt installation (cross compiled Qt).

  • Im just finding it hard to understand the steps to get this working,

    Looking at guides like this implys that embedded systems only support Qt 4

    I assume building from source is what I need to do?

    I cant seem to find any sort of 'getting started' guide

  • @jsulm I've found the mkspec folder, but how do I know what options to select from it?

    Photo attached,



  • Is there any guide or instruction manual for this?

  • Lifetime Qt Champion

    This wiki entry might be of interest.

  • Thanks,

    I've read that article before but the problem is lines like this:

    "Once you have the tarball, extract it somewhere convenient for your normal user e.g. $HOME/development/qt-4.7.2, say. Change into the Qt source directory and configure Qt for an embedded host build with something along the lines of:"

    The problem here being "something along the lines of"

    It doesn't help me understand what the options should be,

    Thanks again,


  • Further to my previous post, the 'build your own toolchain' link sends you to an article that is under construction (here)

  • As another point, that post is also for Qt 4.x.x

    I cant seem to find Qt Everywhere for 5.11 forum post

    Apologies for all the replies but due to the time zone difference I'm trying to get as many thoughts as I have down as possible

  • Lifetime Qt Champion

    Now there's only one package for all platform whether desktop, mobile or embedded. Everything is available in the same sources.

  • I don't understand what you mean, I thought the two options were

    1. Qt online installer (Not useful as my embedded system requires compiling from source to enable cross compilation)

    2. Qt everywhere (Source files allowing for compilation on any machine regardless of architecture)

    So therefore when you're talking about compiling from source, mkspecs etc I assume that means use Qt everywhere? For which 5.11 can be found here.

    Thanks for helping me so far, I appreciate I've been asking a lot. I guess Qt is far more geared toward corporate use with teams of people trained in Linux, compiling from source etc. Id like to be able to learn how to do that, but with the little documentation available (incomplete, out of date, written assuming significant prior knowledge) It becomes a minefield for someone just starting out.



  • Lifetime Qt Champion

    I mean that in the Qt 4 times, there were separate packages for Desktop and Embedded use. With Qt 5, that's gone, there's only one source for all platforms whether they are Desktop, Mobile or Embedded. The link you posted is indeed where you can get the archive of the sources for the Qt 5.11.1 release.

    The project is not particularly geared toward corporate use. You can see for example the yocto project which provides means to create base images for a variety of devices. The problem you are hitting is that there's currently a whole lot of boards that exists and not all constructors take the time to provide a nicely integrated SDK or at least instructions to get started with cross-compilation.

    If the Orange Pi is a clone of the Raspberry Pi then you can likely follow the same instructions to get started. And as with most cross-compilation stuff, doing it from Linux is way easier than from Windows.

  • I understand that there are a lot of devices to cater for, but consdiering a lot are based on similar architecture ie. ARM v6, ARM v7, i386 etc I would have thought a generic guide for cross compilation would have been available with the information youve given me.

    Anyway, in the next few days ill try compiling the Qt 5.11 source on both my desktop pc and the ARM board and see how far I get, Ill report back with any progress. If I do get this to work ill be sure to write up a how-to guide including the information youve given me for others in my position.

    I have tried following guides for the raspberry pi but most seem to involve creating a custom image of raspbian which was not suitable for my board as the Allwinner H3 that the Orange Pi is based on is a mali 400 device whereas the raspberry pi has something completely different,



Log in to reply