Please help me compile QT5 on armv7



  • I am trying to natively compile QT5.4.2 on Arm.

    I configure like this:
    arch@honeybadger qt-everywhere-opensource-src-5.4.2]$ ./configure -confirm-license -opensource -prefix /usr -bindir /usr/lib/qt/bin -docdir /usr/share/doc/qt -headerdir /usr/include/qt -archdatadir /usr/lib/qt -datadir /usr/share/qt -sysconfdir /etc/xdg -examplesdir /usr/share/doc/qt/examples -plugin-sql-{psql,mysql,sqlite,odbc} -system-sqlite -openssl-linked -nomake examples -nomake tests -no-rpath -optimized-qmake -dbus-linked -system-harfbuzz -journald -libinput -no-use-gold-linker -no-reduce-relocations -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-avx2 -opengl es2 -v -device-option DISTRO_OPTS=hard-float -skip qtwebengine -xplatform armv7l-unknown-linux-gnueabihf

    and I end up with this: ( I have libinput, I think it has something to do with unknown architecture?)

    /qt-everywhere-opensource-src-5.4.2/qtbase/src/corelib/tools/qlocale_unix.cpp
    g++ -o "/home/arch/qt/qt-everywhere-opensource-src-5.4.2/qtbase/bin/qmake" project.o option.o property.o main.o ioutils.o proitems.o qmakevfs.o qmakeglobals.o qmakeparser.o qmakeevaluator.o qmakebuiltins.o makefile.o unixmake2.o unixmake.o mingw_make.o winmakefile.o projectgenerator.o meta.o makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o msvc_vcproj.o msvc_vcxproj.o msvc_nmake.o msvc_objectmodel.o msbuild_objectmodel.o gbuild.o cesdkhandler.o qtextcodec.o qutfcodec.o qstring.o qstring_compat.o qstringbuilder.o qtextstream.o qiodevice.o qdebug.o qmalloc.o qglobal.o qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o qfilesystementry.o qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o qlibraryinfo.o qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnumeric.o qcryptographichash.o qxmlstream.o qxmlutils.o qlogging.o qjson.o qjsondocument.o qjsonparser.o qjsonarray.o qjsonobject.o qjsonvalue.o qfilesystemengine_unix.o qfilesystemiterator_unix.o qfsfileengine_unix.o qlocale_unix.o -Wl,--gc-sections
    Running configuration tests...
    Found pkg-config from $PATH: /usr/bin/pkg-config
    Warning: Disabling pkg-config since PKG_CONFIG_LIBDIR is not set.
    Warning: Disabling pkg-config since PKG_CONFIG_SYSROOT_DIR is not set.
    Determining architecture... ()
    armv7l-unknown-linux-gnueabihf-g++ -c -pipe -g -Wall -W -fPIC -I. -I../../mkspecs/armv7l-unknown-linux-gnueabihf -o arch.o arch.cpp
    armv7l-unknown-linux-gnueabihf-g++ -o arch arch.o -libinput
    /usr/bin/ld: cannot find -libinput
    collect2: error: ld returned 1 exit status
    Makefile:103: recipe for target 'arch' failed
    make: *** [arch] Error 1
    Unable to determine architecture!

    Could not determine the target architecture!
    Turn on verbose messaging (-v) to see the final report.
    Determining architecture... ()
    g++ -c -pipe -g -Wall -W -fPIC -I. -I../../mkspecs/linux-g++ -o arch.o arch.cpp
    g++ -o arch arch.o -libinput
    /usr/bin/ld: cannot find -libinput
    collect2: error: ld returned 1 exit status
    Makefile:104: recipe for target 'arch' failed
    make: *** [arch] Error 1
    Unable to determine architecture!

    Could not determine the host architecture!
    Turn on verbose messaging (-v) to see the final report.
    System architecture: 'unknown'
    Host architecture: 'unknown'
    C++11 auto-detection... ()
    armv7l-unknown-linux-gnueabihf-g++ -c -pipe -O2 -std=c++0x -Wall -W -fPIC -I. -I../../../mkspecs/armv7l-unknown-linux-gnueabihf -o c++11.o c++11.cpp
    armv7l-unknown-linux-gnueabihf-g++ -Wl,-O1 -o c++11 c++11.o -libinput
    /usr/bin/ld: cannot find -libinput
    collect2: error: ld returned 1 exit status
    Makefile:104: recipe for target 'c++11' failed
    make: *** [c++11] Error 1
    C++11 disabled.
    floatmath auto-detection... ()
    armv7l-unknown-linux-gnueabihf-g++ -c -pipe -O2 -Wall -W -fPIC -I. -I../../../mkspecs/armv7l-unknown-linux-gnueabihf -o floatmath.o floatmath.cpp
    armv7l-unknown-linux-gnueabihf-g++ -Wl,-O1 -o floatmath floatmath.o -libinput
    /usr/bin/ld: cannot find -libinput
    collect2: error: ld returned 1 exit status
    Makefile:103: recipe for target 'floatmath' failed
    make: *** [floatmath] Error 1
    floatmath disabled.
    zlib auto-detection... ()
    armv7l-unknown-linux-gnueabihf-g++ -c -pipe -O2 -Wall -W -fPIC -I. -I../../../mkspecs/armv7l-unknown-linux-gnueabihf -o zlib.o zlib.cpp
    zlib.cpp: In function ‘int main(int, char**)’:
    zlib.cpp:38:15: warning: variable ‘stream’ set but not used [-Wunused-but-set-variable]
    z_streamp stream;
    ^
    zlib.cpp:40:17: warning: variable ‘ver’ set but not used [-Wunused-but-set-variable]
    const char *ver = zlibVersion();
    ^
    zlib.cpp:43:9: warning: variable ‘res’ set but not used [-Wunused-but-set-variable]
    int res = compress2(0, 0, 0, 0, 1);
    ^
    armv7l-unknown-linux-gnueabihf-g++ -Wl,-O1 -o zlib zlib.o -libinput -lz
    /usr/bin/ld: cannot find -libinput
    collect2: error: ld returned 1 exit status
    Makefile:103: recipe for target 'zlib' failed
    make: *** [zlib] Error 1
    zlib disabled.
    mtdev auto-detection... ()
    armv7l-unknown-linux-gnueabihf-g++ -c -pipe -O2 -Wall -W -fPIC -I. -I../../../mkspecs/armv7l-unknown-linux-gnueabihf -o mtdev.o mtdev.cpp
    armv7l-unknown-linux-gnueabihf-g++ -Wl,-O1 -o mtdev mtdev.o -libinput -lmtdev
    /usr/bin/ld: cannot find -libinput
    collect2: error: ld returned 1 exit status
    Makefile:104: recipe for target 'mtdev' failed
    make: *** [mtdev] Error 1
    mtdev disabled.
    journald auto-detection... ()
    armv7l-unknown-linux-gnueabihf-gcc -c -pipe -O2 -Wall -W -fPIC -I. -I../../../mkspecs/armv7l-unknown-linux-gnueabihf -o journald.o journald.c
    journald.c: In function ‘main’:
    journald.c:37:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
    int main(int argc, char **argv)
    ^
    journald.c:37:27: warning: unused parameter ‘argv’ [-Wunused-parameter]
    int main(int argc, char **argv)
    ^
    armv7l-unknown-linux-gnueabihf-g++ -Wl,-O1 -o journald journald.o -libinput -lsystemd
    /usr/bin/ld: cannot find -libinput
    collect2: error: ld returned 1 exit status
    Makefile:104: recipe for target 'journald' failed
    make: *** [journald] Error 1
    journald disabled.
    journald support cannot be enabled due to functionality tests!
    Turn on verbose messaging (-v) to /home/arch/qt/qt-everywhere-opensource-src-5.4.2/qtbase/configure to see the final report.
    If you believe this message is in error you may use the continue
    switch (-continue) to /home/arch/qt/qt-everywhere-opensource-src-5.4.2/qtbase/configure to continue.
    [arch@honeybadger qt-everywhere-opensource-src-5.4.2]$


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    You should add which distribution you are using. Also, did you install all required dev packages ?



  • Thanks! Oh yeah that would be good to do. ArchLinuxArm is what I am using. I am using an HP Touchpad with libhybris which offers a hwcomposer plugin that works with android but only up to Qt 5.4. The problem is arch went to qt5.5 and I need a package to build something called hawaii. Old packages are not available, so I thought I would take a stab at compiling on the device.

    I tried creating a qmake.conf directory in qtbase/mkspecs as you might be able to tell, no matter what I do, I get these errors.

    I originally was trying to use makepkg but I get the same error.

    https://github.com/archlinuxarm/PKGBUILDs/blob/master/extra/qt5/PKGBUILD


  • Lifetime Qt Champion

    Looks like currently you are missing the libinput package



  • That is what I thought, but it is installed. I am already using it to run qml-composer. I already have qt5 installed and working for weston, I just wanted to compile my own qt5.4.2...

    I can compile qtwayland....


  • Lifetime Qt Champion

    Is the library in some place exotic on your system ?



  • Don't think so.

    From the /usr folder I did the find command. I do have /lib but that is just a symbolic link to /usr/lib...

    [arch@honeybadger usr]$ sudo find . | grep libinput
    ./bin/libinput-list-devices
    ./bin/libinput-debug-events
    ./lib/pkgconfig/libinput.pc
    ./lib/pkgconfig/xorg-libinput.pc
    ./lib/xorg/modules/input/libinput_drv.so
    ./lib/libinput.so
    ./lib/udev/rules.d/80-libinput-device-groups.rules
    ./lib/udev/rules.d/90-libinput-model-quirks.rules
    ./lib/udev/hwdb.d/90-libinput-model-quirks.hwdb
    ./lib/udev/libinput-device-group
    ./lib/libinput.so.10
    ./lib/libinput.so.10.3.0
    ./include/xorg/libinput-properties.h
    ./include/libinput.h
    ./share/man/man4/libinput.4.gz
    ./share/man/man1/libinput-list-devices.1.gz
    ./share/man/man1/libinput-debug-events.1.gz
    ./share/X11/xorg.conf.d/90-libinput.conf
    ./share/licenses/libinput
    ./share/licenses/libinput/COPYING
    ./share/licenses/xf86-input-libinput
    ./share/licenses/xf86-input-libinput/COPYING


  • Lifetime Qt Champion

    Can you try again without the -libinput option ? It should be auto-detected



  • I'm running Arch Linux as well, and have encountered this issue. The libsystemd-journal package has been merged into libsystemd, so you need to update Qt's configs accordingly. Drop the "-journal" suffix from "libsystemd-journald" (to just, "libsystemd") in the following files:

    • qtbase/config.tests/unix/journald/journald.pro
    • qtbase/src/corelib/global/global.pri

    For example, here are the patches I applied to make get Qt to compile:

    --- qtbase/src/corelib/global/global.pri.orig   2016-03-01 11:37:50.658512771 -0800
    +++ qtbase/src/corelib/global/global.pri        2016-03-01 11:37:57.835221806 -0800
    @@ -51,6 +51,6 @@
    
     journald {
         CONFIG += link_pkgconfig
    -    PKGCONFIG_PRIVATE += libsystemd-journal
    +    PKGCONFIG_PRIVATE += libsystemd
         DEFINES += QT_USE_JOURNALD
     }
    
    --- qtbase/config.tests/unix/journald/journald.pro.orig 2016-03-01 11:37:17.991653274 -0800
    +++ qtbase/config.tests/unix/journald/journald.pro      2016-03-01 11:37:22.671680898 -0800
    @@ -1,6 +1,6 @@
     SOURCES = journald.c
    
     CONFIG += link_pkgconfig
    -PKGCONFIG_PRIVATE += libsystemd-journal
    +PKGCONFIG_PRIVATE += libsystemd
    
     CONFIG -= qt
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.