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?


  • 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