Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

How to build Qt on system without a GUI?



  • So, problems in Makefile ?


  • Qt Champions 2019

    @Pavel_47 Try

    file /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so
    

    and post the output here.



  • here it is:

    pavel@ALABAMA:~/raspi/qtbase$ file ~/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so
    /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so: symbolic link to libxkbcommon.so.0.0.0
    

  • Qt Champions 2019

    @Pavel_47 Then please do

    file /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0
    


  • pavel@ALABAMA:~/raspi/qtbase$ file ~/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0
    /home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0: cannot open `/home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0' (No such file or directory)
    


  • @Pavel_47 said in How to build Qt on system without a GUI?:

    I've just checked libxkbcommon-dev and libxkbcommon-x11-dev on RPi.

    So sync them to your sysroot in the host PC!

    As on Ubuntu they are installed and are newest versions.

    Forget about that, it doesn't matter.

    For cross-compilation you need your libraries + headers installed properly in target device (RPi), then copy (synchronize) some folders from your target device into the sysroot folder in your host PC (with Ubuntu) and only then attempt to build (Qt framework, modules, your application).

    Please take a look at this guide for cross-compiling Qt for RPi



  • @Pablo-J-Rogina said in How to build Qt on system without a GUI?:

    Please take a look at this guide for cross-compiling Qt for RPi

    I proceeded exactly as described on the page you mentioned.
    Sure I performed the resync with RPi



  • @Pavel_47 said in How to build Qt on system without a GUI?:

    Sure I performed the resync with RPi

    I'm not going to argue in contrary, so your next task is to figure out why even having rsync'd the file is missing from your sysroot folder...

    /home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0: cannot open



  • The file isn't missing. It's there:
    alt text



  • @Pavel_47

    The file isn't missing. It's there:

    Well, it's somewhere else but not in the expected location it seems...

    /home/pavel/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0

    is different from the location in your last post (again, please stop posting screenshots!)

    /home/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0



  • Sorry, I've been mistaken while executing:
    file /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0

    the correct result is here:

    pavel@ALABAMA:~/raspi/qtbase$ file ~/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0
    /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so.0.0.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=ca40d4cec17c0cb8d6a85dcefc44fc89ac706d41, stripped
    
    


  • I contacted Ran Benita, the developer of xkbcommon package, and exposed him the problem. After some checks on my system, here is his conclusion:

    "The version of libxkbcommon you have in your arm-linux-gnueabihf raspi/sysroot is very very old. Qt requires a newer version. You should update your cross-compilation environment to something more recent."

    Where /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so comes from ?


  • Qt Champions 2019

    @Pavel_47 said in How to build Qt on system without a GUI?:

    Where /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libxkbcommon.so comes from ?

    From your Raspberry Pi when you're syncing it...
    What exact OS (including version) do you run on it?



  • uname -a
    Linux raspberry 4.9.77-v7+

    cat /etc/os-release
    Raspian GNU/Linux 8 (jessie)


  • Qt Champions 2019

    @Pavel_47 You can try to upgrade to current Raspbian version and then recreate your sysroot.



  • Well ... I did it just before resync. Then, as I remember, after some manipulations with other staff, system proposed to remove unused files ... and I did it. Ok, I'll try to upgrade one more time. Then what should I check on RPi3, that xkbcommon package is latest version ?



  • @Pavel_47 said in How to build Qt on system without a GUI?:

    I'll try to upgrade one more time. Then what should I check on RPi3, that xkbcommon package is latest version ?

    please be aware that @jsulm is suggesting to update your OS, not just that library/package...

    Latest Raspbian release is Buster



  • Yes, I understood the suggestion and upgraded system ... but being within "jessie". The Buster is quite new version, released 3-4 months ago. Ran Benita qualified xkbcommon staff, that caused problems and that originates from Raspberry (if my comprehension is correct), as "very very old". So, let's say in May 2019 (before Buster) it was impossible to install Qt toolchain ... or I missed something ? I've just checked upgrade to Buster ... according to some manual I've found on the web, it could take several hours. So, is it really necessary to upgrade to Buster ?



  • Has anyone managed to install Qt toolchain on Ubuntu that was synchronized with RPi running Buster ? If it's the case I will immediately buy new RPi4 and install Buster on it.


  • Qt Champions 2019

    @Pavel_47 I plan to do so this week. I already have RPi4, but need to install Buster first. Can't tell you when exactly I will do all this. You can ping me end of week (if it is not that urgent :-)).



  • Finally I've tried to build Qt toolchain for RPi4 using this tutorial:
    Cross-Compile QT 5.12.6 / Raspberry Pi 4
    Once more ... doesn't work.
    Here is what I get while launching configure:

    make[2]: Leaving directory '/home/pavel/qtbase/src/widgets'
    make[1]: Leaving directory '/home/pavel/qtbase/src'
    Makefile:50: recipe for target 'sub-src-make_first' failed
    make: *** [sub-src-make_first] Error 2
    

    Any suggestions ?


  • Qt Champions 2019

    @Pavel_47 said in How to build Qt on system without a GUI?:

    Any suggestions ?

    You did not post the actual errors - those should be before these lines.
    Also, did you call configure from a clean state?



  • The log is quite huge, but concerning just before lines, here it is:

    rm -f libQt5Widgets.so.5.12.6 libQt5Widgets.so libQt5Widgets.so.5 libQt5Widgets.so.5.12
    /home/pavel/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/pavel/raspi/sysroot/ -Wl,--no-undefined -Wl,--version-script,QtWidgets.version -Wl,-O1 -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN -Wl,-rpath-link,/home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/pavel/raspi/sysroot/lib/arm-linux-gnueabihf -shared -Wl,-soname,libQt5Widgets.so.5 -o libQt5Widgets.so.5.12.6 .obj/qaction.o .obj/qactiongroup.o .obj/qapplication.o .obj/qwidgetbackingstore.o .obj/qboxlayout.o .obj/qgridlayout.o .obj/qlayout.o .obj/qlayoutengine.o .obj/qlayoutitem.o .obj/qshortcut.o .obj/qsizepolicy.o .obj/qstackedlayout.o .obj/qtooltip.o .obj/qwidget.o .obj/qwidgetaction.o .obj/qgesture.o .obj/qstandardgestures.o .obj/qgesturerecognizer.o .obj/qgesturemanager.o .obj/qdesktopwidget.o .obj/qwidgetsvariant.o .obj/qwidgetwindow.o .obj/qwindowcontainer.o .obj/qtestsupport_widgets.o .obj/qopenglwidget.o .obj/qformlayout.o .obj/qwhatsthis.o .obj/qdrawutil.o .obj/qstyle.o .obj/qstylefactory.o .obj/qstyleoption.o .obj/qstyleplugin.o .obj/qstylehelper.o .obj/qcommonstyle.o .obj/qproxystyle.o .obj/qstylepainter.o .obj/qstylesheetstyle.o .obj/qstylesheetstyle_default.o .obj/qpixmapstyle.o .obj/qstyleanimation.o .obj/qwindowsstyle.o .obj/qfusionstyle.o .obj/qframe.o .obj/qabstractscrollarea.o .obj/qfocusframe.o .obj/qwidgetanimator.o .obj/qabstractbutton.o .obj/qabstractslider.o .obj/qbuttongroup.o .obj/qcalendarwidget.o .obj/qcheckbox.o .obj/qcombobox.o .obj/qcommandlinkbutton.o .obj/qdatetimeedit.o .obj/qdial.o .obj/qdockwidget.o .obj/qdockarealayout.o .obj/qeffects.o .obj/qfontcombobox.o .obj/qgroupbox.o .obj/qkeysequenceedit.o .obj/qlabel.o .obj/qlcdnumber.o .obj/qlineedit_p.o .obj/qlineedit.o .obj/qwidgetlinecontrol.o .obj/qmainwindow.o .obj/qmainwindowlayout.o .obj/qmdiarea.o .obj/qmdisubwindow.o .obj/qmenu.o .obj/qmenubar.o .obj/qprogressbar.o .obj/qpushbutton.o .obj/qradiobutton.o .obj/qwidgetresizehandler.o .obj/qdialogbuttonbox.o .obj/qrubberband.o .obj/qscrollarea.o .obj/qscrollbar.o .obj/qsizegrip.o .obj/qslider.o .obj/qabstractspinbox.o .obj/qspinbox.o .obj/qsplashscreen.o .obj/qsplitter.o .obj/qstackedwidget.o .obj/qstatusbar.o .obj/qtabbar.o .obj/qplaintextedit.o .obj/qtextedit.o .obj/qtextbrowser.o .obj/qtabwidget.o .obj/qtoolbar.o .obj/qtoolbarlayout.o .obj/qtoolbararealayout.o .obj/qtoolbarseparator.o .obj/qtoolbox.o .obj/qtoolbutton.o .obj/qtoolbarextension.o .obj/qwidgettextcontrol.o .obj/qcolordialog.o .obj/qdialog.o .obj/qerrormessage.o .obj/qfiledialog.o .obj/qsidebar.o .obj/qfilesystemmodel.o .obj/qfileinfogatherer.o .obj/qfontdialog.o .obj/qinputdialog.o .obj/qmessagebox.o .obj/qprogressdialog.o .obj/qwizard.o .obj/qaccessiblewidget.o .obj/qaccessiblewidgetfactory.o .obj/complexwidgets.o .obj/qaccessiblemenu.o .obj/qaccessiblewidgets.o .obj/rangecontrols.o .obj/simplewidgets.o .obj/itemviews.o .obj/qabstractitemview.o .obj/qheaderview.o .obj/qbsptree.o .obj/qabstractitemdelegate.o .obj/qitemdelegate.o .obj/qitemeditorfactory.o .obj/qstyleditemdelegate.o .obj/qcolumnview.o .obj/qcolumnviewgrip.o .obj/qdatawidgetmapper.o .obj/qdirmodel.o .obj/qlistview.o .obj/qlistwidget.o .obj/qtableview.o .obj/qtablewidget.o .obj/qtreeview.o .obj/qtreewidget.o .obj/qtreewidgetitemiterator.o .obj/qfileiconprovider.o .obj/qgraphicsgridlayout.o .obj/qgraphicsitem.o .obj/qgraphicsitemanimation.o .obj/qgraphicslayout.o .obj/qgraphicslayout_p.o .obj/qgraphicslayoutitem.o .obj/qgraphicslinearlayout.o .obj/qgraphicsproxywidget.o .obj/qgraphicsscene.o .obj/qgraphicsscene_bsp.o .obj/qgraphicsscenebsptreeindex.o .obj/qgraphicssceneevent.o .obj/qgraphicssceneindex.o .obj/qgraphicsscenelinearindex.o .obj/qgraphicstransform.o .obj/qgraphicsview.o .obj/qgraphicswidget.o .obj/qgraphicswidget_p.o .obj/qgraphicslayoutstyleinfo.o .obj/qgraphicsgridlayoutengine.o .obj/qsimplex_p.o .obj/qgraphicsanchorlayout_p.o .obj/qgraphicsanchorlayout.o .obj/qsystemtrayicon.o .obj/qcolormap.o .obj/qcompleter.o .obj/qscroller.o .obj/qscrollerproperties.o .obj/qflickgesture.o .obj/qundostack.o .obj/qundogroup.o .obj/qundoview.o .obj/qsystemtrayicon_x11.o .obj/qguistatemachine.o .obj/qkeyeventtransition.o .obj/qmouseeventtransition.o .obj/qbasickeyeventtransition.o .obj/qbasicmouseeventtransition.o .obj/qgraphicseffect.o .obj/qpixmapfilter.o .obj/qrc_qstyle.o .obj/qrc_qmessagebox.o .obj/moc_qpixmapstyle_p.o  /home/pavel/qtbase/lib/libQt5Gui.so /home/pavel/qtbase/lib/libQt5Core.so -lpthread /home/pavel/raspi/sysroot//usr/lib/arm-linux-gnueabihf/libGLESv2.so   
    ln -s libQt5Widgets.so.5.12.6 libQt5Widgets.so
    ln -s libQt5Widgets.so.5.12.6 libQt5Widgets.so.5
    ln -s libQt5Widgets.so.5.12.6 libQt5Widgets.so.5.12
    rm -f ../../lib/libQt5Widgets.so.5.12.6
    mv -f libQt5Widgets.so.5.12.6 ../../lib/libQt5Widgets.so.5.12.6
    rm -f ../../lib/libQt5Widgets.so
    rm -f ../../lib/libQt5Widgets.so.5
    rm -f ../../lib/libQt5Widgets.so.5.12
    mv -f libQt5Widgets.so ../../lib/libQt5Widgets.so
    mv -f libQt5Widgets.so.5 ../../lib/libQt5Widgets.so.5
    mv -f libQt5Widgets.so.5.12 ../../lib/libQt5Widgets.so.5.12
    make[2]: Leaving directory '/home/pavel/qtbase/src/widgets'
    make[1]: Leaving directory '/home/pavel/qtbase/src'
    Makefile:50: recipe for target 'sub-src-make_first' failed
    make: *** [sub-src-make_first] Error 2
    
    Concerning clean state ... probably not. Last time I tried with RPi3 three months ago and I don't remember the state of the system when I abandoned my attempts wit RPi3.
    But I'll try once more after cleaning
    


  • Sorry, I've bee mistaken: the error occurred after make -j4, ... not after configure



  • Hear is after clean and launching make:

    constant_mappings.cpp: In function ‘quint64 spiStatesFromQState(QAccessible::State)’:
    constant_mappings.cpp:82:35: error: ‘ATSPI_STATE_READ_ONLY’ was not declared in this scope
             setSpiStateBit(&spiState, ATSPI_STATE_READ_ONLY);
                                       ^
    Makefile:2911: recipe for target '.obj/constant_mappings.o' failed
    make[3]: *** [.obj/constant_mappings.o] Error 1
    make[3]: Leaving directory '/home/pavel/qtbase/src/platformsupport/linuxaccessibility'
    Makefile:358: recipe for target 'sub-linuxaccessibility-make_first' failed
    make[2]: *** [sub-linuxaccessibility-make_first] Error 2
    make[2]: Leaving directory '/home/pavel/qtbase/src/platformsupport'
    Makefile:585: recipe for target 'sub-platformsupport-make_first' failed
    make[1]: *** [sub-platformsupport-make_first] Error 2
    make[1]: Leaving directory '/home/pavel/qtbase/src'
    Makefile:50: recipe for target 'sub-src-make_first' failed
    make: *** [sub-src-make_first] Error 2
    
    

  • Qt Champions 2019

    @Pavel_47 said in How to build Qt on system without a GUI?:

    ATSPI_STATE_READ_ONLY

    This belongs to libatspi. Do you have it and its dev package in your sysroot for RPi?



  • You mean in sysroot/lib/ ?
    No at that place there is no libatspi.



  • @Pavel_47 said in How to build Qt on system without a GUI?:

    libatspi

    I've tried to install libatspi and libatspi-dev, but Ubuntu updater couldn't locate these packages. Should they come from synchronization with RPi ?


  • Qt Champions 2019

    @Pavel_47 said in How to build Qt on system without a GUI?:

    Should they come from synchronization with RPi ?

    Yes



  • So, should I install them on RPi and then re-synchronize ?



  • The Raspberry Pi also could not locate these packages.


  • Qt Champions 2019

    @Pavel_47 My Ubuntu 18.04 has libatspi2.0-0 and libatspi2.0-0-dev
    What is running on your RPi?



  • My Ubuntu 18.04 has libatspi2.0-0 and libatspi2.0-0-dev
    You have them in /usr/lib/ ?

    What is running on your RPi?
    Raspbian 10 (buster)



  • If I understood, you managed to build Qt toolchain for RPi4 on your Ubuntu. Is it correct?



  • The execution of one of the 3 resynchronizations (rsync -avz pi@yourpi:/usr/lib sysroot/usr to be exact) resulted in the following error:

    sent 1,332,333 bytes received 119,470,015 bytes 1,320,244.24 bytes/sec
    total size is 3,341,241,457 speedup is 27.66
    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1668) [generator=3.1.2]

    It’s probably related to the cause of make failure. I went up the log of synchronization, displayed on the screen but I did not notice any error.

    Any suggestions ?


  • Qt Champions 2019

    @Pavel_47 said in How to build Qt on system without a GUI?:

    You have them in /usr/lib/ ?

    In /usr/lib/x86_64-linux-gnu/libatspi.so.0
    And Ubuntu provides the packages I mentioned above.
    Debian should provide them as well (Raspbian is based on Debian), so you should be able to install them.

    "Any suggestions ?" - well, something went wrong, there should be something in the log.



  • @jsulm said in How to build Qt on system without a GUI?:

    Debian should provide them as well (Raspbian is based on Debian), so you should be able to install them.
    "Any suggestions ?" - well, something went wrong, there should be something in the log.

    Yes I also have it on Ubuntu on the same location.
    I also checked on Raspberry: it is there - in /user/lib/arm-linux-gnueabihf
    But I didn't find it on Ubuntu - in ~/raspi/sysroot/usr/lib/arm-linux-gnueabihf, the folder which was synchronized with RPi.
    Concerning your suggestion to look over log ... I didn't find any log file on rsync instruction. Nevertheless I look through over whole display buffer after erroneuous rsync execution (that didn't contain whole log !!!) and didn't find any error.


  • Lifetime Qt Champion

    Hi,

    If you can find the libraires/headers in your device root file system then using scp might be faster in your case to ensure you copy the files back to your machine.



  • @SGaist said in How to build Qt on system without a GUI?:

    Hi,

    If you can find the libraires/headers in your device root file system then using scp might be faster in your case to ensure you copy the files back to your machine.

    Copied missed libraries from RPi to Ubuntu and rerun build.
    Here is as it fails this time:

    /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libpthread.a(pthread_create.o): In function __pthread_create_2_1': /build/glibc-FUvrFr/glibc-2.28/nptl/pthread_create.c:697: undefined reference to_dl_stack_flags'
    /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libpthread.a(unwind.o): In function unwind_stop': /build/glibc-FUvrFr/glibc-2.28/nptl/unwind.c:72: undefined reference to__pointer_chk_guard_local'
    /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libpthread.a(nptl-init.o): In function __pthread_initialize_minimal_internal': /build/glibc-FUvrFr/glibc-2.28/nptl/nptl-init.c:434: undefined reference to_dl_pagesize'
    /build/glibc-FUvrFr/glibc-2.28/nptl/nptl-init.c:434: undefined reference to _dl_init_static_tls' /build/glibc-FUvrFr/glibc-2.28/nptl/nptl-init.c:434: undefined reference to_dl_wait_lookup_done'
    /home/pavel/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libpthread.a(nptl-init.o): In function __pthread_get_minstack': /build/glibc-FUvrFr/glibc-2.28/nptl/nptl-init.c:443: undefined reference to_dl_pagesize'
    collect2: error: ld returned 1 exit status
    Makefile:1155: recipe for target '../../lib/libQt5Core.so.5.12.6' failed
    make[2]: *** [../../lib/libQt5Core.so.5.12.6] Error 1
    make[2]: Leaving directory '/home/pavel/qtbase/src/corelib'
    Makefile:198: recipe for target 'sub-corelib-make_first' failed
    make[1]: *** [sub-corelib-make_first] Error 2
    make[1]: Leaving directory '/home/pavel/qtbase/src'
    Makefile:50: recipe for target 'sub-src-make_first' failed
    make: *** [sub-src-make_first] Error 2



  • I've just tried once more resync the /usr/lib.
    ... and it failed immediately:

    2020/02/14 12:25:34 [7746] receiving file list
    2020/02/14 12:25:34 [7749] rsync: send_files failed to open "/usr/lib/cups/backend/vnc": Permission denied (13)
    2020/02/14 12:25:38 [7749] sent 5,485 bytes received 1,284,984 bytes 73,741.09 bytes/sec
    2020/02/14 12:25:38 [7749] total size is 3,341,241,457 speedup is 2,589.17
    2020/02/14 12:25:38 [7746] rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1668) [generator=3.1.2]


Log in to reply