Important: Please read the Qt Code of Conduct -

Qt4 on Raspberry Pi

  • Hey Qt community!

    I have made a program for my Raspberry Pi, wheezy distro, in Qt Creator 4.7.4 but I can't figure out how to compile it to work with the Pi. I have been searching but everything I get is for Qt5. Is it even possible to compile for Raspberry with Qt4, or do I have to transit to Qt5 - and if so, how do I do it?

    Thanks a lot!

    Best regards

  • Moderators

    As far as I know, all active Raspberry Pi development is using Qt 5.

  • Thank you for your answer!

    So I have to transit to Qt 5. I would rather not but it might be the only solution.

    Should I just download the latest beta from and install it? Is there anything I should be aware of when going from Qt 4 to Qt 5?

  • hm, dunno. As Raspian is based on debian, you probably could get qt 4.7/8 to compile your program.
    Still, the support for hardware on this platform is a Qt5 issue indeed.

  • Hi all,
    I'm trying to build qt4 for my raspberry pi without success.

    I got the toolchain with this:
    git clone --depth 1

    then I edited qt-everywhere-opensource-src-4.8.3/mkspecs/qws/linux-arm-g++/qmake.conf :


    QMAKE_CC = /tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-gcc
    QMAKE_CXX = /tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-g++
    QMAKE_LINK = /tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-g++
    QMAKE_LINK_SHLIB = /tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-g++

    QMAKE_AR = /tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-ar cqs
    QMAKE_OBJCOPY = /tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-objcopy
    QMAKE_RANLIB = /tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-ranlib



    and built qt with this:
    ./configure -opensource -confirm-license -no-qt3support -release -nomake examples -nomake demos -embedded arm -little-endian -prefix /opt/qt4-4.8.3-slackrasp -qt-gfx-vnc -no-phonon -no-webkit -no-script -no-declarative -no-javascript-jit -no-pch
    make install

    it build without errors but the library seems to be incompatible with Raspberry PI :
    luca@slackrasp:~$ ldd /opt/qt4-4.8.3-slackrasp/lib/
    not a dynamic executable

    where is the problem...?

  • have a look at this "wiki page":

    At the end there is a part about Qt4, with a link to the necessary specs.

    Hope this helps.

  • Thanks for the link.
    I tried to follow the described procedure without success.

    I'm using the wheezy image from "raspberry download page": .
    As toolchain I used the packages from wiki page "gcc-4.7-linaro-rpi-gnueabihf.tbz": and extracted in /gcc-4.7-linaro-rpi-gnueabihf/ .
    I also copied the folder I found in " ": in my qt source folder in mkspecs/qws/ .
    I mounted my raspberry rootfs in /mnt/tmp .

    To configure Qt I tried both the following:
    ./configure -opensource -confirm-license -no-qt3support -release -nomake examples -nomake demos -embedded rasp-pi -little-endian -prefix /opt/qt4-4.8.3-slackrasp -qt-gfx-vnc
    ./configure -opensource -confirm-license -sysroot /mnt/tmp/ -no-qt3support -release -nomake examples -nomake demos -embedded rasp-pi -little-endian -prefix /opt/qt4-4.8.3-slackrasp -qt-gfx-vnc
    The second ones doesn't compile, I get some libraries errors.
    obj/release-shared-emb-rasp-pi/qlibrary_unix.o: In function QLibraryPrivate::load_sys()': qlibrary_unix.cpp:(.text+0xb10): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /mnt/tmp/usr/lib/arm-linux-gnueabihf/libdl.a(dlopen.o): In functiondlopen':
    (.text+0xc): undefined reference to __dlopen' /mnt/tmp/usr/lib/arm-linux-gnueabihf/libdl.a(dlclose.o): In functiondlclose':
    (.text+0x0): undefined reference to __dlclose' /mnt/tmp/usr/lib/arm-linux-gnueabihf/libdl.a(dlsym.o): In functiondlsym':
    (.text+0xc): undefined reference to __dlsym' /mnt/tmp/usr/lib/arm-linux-gnueabihf/libdl.a(dlerror.o): In functiondlerror':
    (.text+0x0): undefined reference to __dlerror' /mnt/tmp/usr/lib/arm-linux-gnueabihf/libm.a(feholdexcpt.o): In functionfeholdexcept':
    (.text+0x48): undefined reference to _dl_hwcap' /mnt/tmp/usr/lib/arm-linux-gnueabihf/libm.a(fesetenv.o): In functionfesetenv':
    (.text+0x64): undefined reference to _dl_hwcap' collect2: error: ld returned 1 exit status gmake[1]: *** [../../lib/] Error 1 gmake[1]: Leaving directory/mnt/temporanea/luca/qt-everywhere-opensource-src-4.8.3/src/corelib'
    gmake: *** [sub-corelib-make_default-ordered] Error 2

    The first compile without problem so I can put the libraries to my board but when I cross-compile some applications for the board and I try to execute on the board I get:
    Illegal instruction

    where do I wrong...?

  • I think there are too much tutorial saying different things to build Qt for Raspberry Pi so it's quite impossible to know what is the right one.

    Building for BeagleBoard was very easier than building for Raspberry...

  • Hi Luca,

    There is a simple solution to install Qt4 on the Pi : just apt-get it.

    Have a look at the "tutorial ": I made. I hope lots of people that want to start programming discover Qt this way. Isn’t that the goal of the Raspberry Pi after all?

    BTW : congrats on installing Qt5. That will be one of my next ramblings...

  • Hi Eddy,
    unfortunately the tutorial you posted doesn't provide a working cross-toolchain (it seems...) .
    It describe how to get a working Qt installation in the board but this way I must build my app using RaspberryPi.

    As I wrote in "this post": I successfully get a working Qt5 with cross-toolchain form the Raspberry . It was not so difficult. Unfortunately for you it's in italian but if you need I can describe you what I've done.

  • bq. unfortunately the tutorial you posted doesn’t provide a working cross-toolchain (it seems…) .
    Yes you are right. I didn't have the intention to use the Pi for cross compiling. I prefer to use my PC for that. ;-)

    thanks for the offer. I will try it first using a translator.

Log in to reply