Installing required libraries on latest Buster for RPi cross-compile
-
I'd like to cross-compile Qt for RPi with latest Buster OS installed, and following this guide or this other one, when installing the required libraries on the board, by running the command:
sudo apt-get build-dep libqt5gui5
I'm getting lots and lots of packages to be installed, including Qt binaries (modules, i.e. libqt5core5a libqt5dbus5 libqt5designer5
libqt5designercomponents5 libqt5gui5 libqt5help5 libqt5network5 libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5quickwidgets5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5webchannel5 libqt5webkit5 libqt5widgets5 libqt5xml5).Is that right?
Has anybody gone through this already?pi@rpi3:~ $ sudo apt-get build-dep libqt5gui5 Reading package lists... Done Picking 'qtbase-opensource-src' as source package instead of 'libqt5gui5' Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: adwaita-icon-theme autoconf automake autopoint autotools-dev dbus-user-session dconf-gsettings-backend dconf-service debhelper default-libmysqlclient-dev dh-autoreconf dh-exec dh-strip-nondeterminism dwz firebird-dev firebird3.0-common firebird3.0-common-doc fontconfig fontconfig-config fonts-dejavu-core freetds-common freetds-dev gettext gir1.2-atk-1.0 gir1.2-atspi-2.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gtk-3.0 gir1.2-harfbuzz-0.0 gir1.2-pango-1.0 glib-networking glib-networking-common glib-networking-services gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme icu-devtools intltool-debian libarchive-zip-perl libasound2-dev libasyncns0 libatk-bridge2.0-0 libatk-bridge2.0-dev libatk1.0-0 libatk1.0-data libatk1.0-dev libatspi2.0-0 libatspi2.0-dev libavahi-client3 libblkid-dev libbrotli1 libcairo-gobject2 libcairo-script-interpreter2 libcairo2 libcairo2-dev libclang1-7 libcolord2 libcroco3 libct4 libcups2 libcups2-dev libcupsimage2 libcupsimage2-dev libdatrie1 libdbus-1-dev libdconf1 libdouble-conversion-dev libdouble-conversion1 libegl-dev libegl-mesa0 libegl1 libegl1-mesa-dev libepoxy-dev libepoxy0 libevdev-dev libevdev2 libexpat1-dev libfbclient2 libffi-dev libfile-stripnondeterminism-perl libflac8 libfontconfig1 libfontconfig1-dev libfribidi-dev libgbm-dev libgbm1 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgdk-pixbuf2.0-dev libgirepository-1.0-1 libgl-dev libgl1 libgl1-mesa-dev libgles-dev libgles1 libgles2 libgles2-mesa-dev libglib2.0-bin libglib2.0-dev libglib2.0-dev-bin libglu1-mesa libglu1-mesa-dev libglvnd0 libglx-dev libglx-mesa0 libglx0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28 libgraphite2-3 libgraphite2-dev libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libgtk-3-common libgtk-3-dev libgudev-1.0-0 libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libharfbuzz0b libhyphen0 libib-util libice-dev libice6 libicu-dev libidn2-dev libinput-bin libinput-dev libinput10 libjbig-dev libjbig0 libjpeg-dev libjpeg62-turbo-dev libjson-glib-1.0-0 libjson-glib-1.0-common liblcms2-2 libllvm7 libltdl-dev libltdl7 liblzma-dev liblzo2-2 libmariadb-dev libmariadb-dev-compat libmariadb3 libmount-dev libmtdev-dev libmtdev1 libodbc1 libogg0 liborc-0.4-0 libp11-kit-dev libpango-1.0-0 libpango1.0-dev libpangocairo-1.0-0 libpangoft2-1.0-0 libpangoxft-1.0-0 libpcre16-3 libpcre2-16-0 libpcre2-32-0 libpcre2-dev libpcre3-dev libpcre32-3 libpcrecpp0v5 libpixman-1-0 libpixman-1-dev libpq-dev libpq5 libproxy-dev libproxy1v5 libpthread-stubs0-dev libpulse-dev libpulse-mainloop-glib0 libpulse0 libqt5core5a libqt5dbus5 libqt5designer5 libqt5designercomponents5 libqt5gui5 libqt5help5 libqt5network5 libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5quickwidgets5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5webchannel5 libqt5webkit5 libqt5widgets5 libqt5xml5 librest-0.7-0 librsvg2-2 librsvg2-common libselinux1-dev libsepol1-dev libsigsegv2 libsm-dev libsm6 libsndfile1 libsoup-gnome2.4-1 libsoup2.4-1 libsqlite3-dev libssl-dev libsybdb5 libtasn1-6-dev libthai-data libthai0 libtiff-dev libtiff5 libtiffxx5 libtommath1 libtool libudev-dev libunbound8 libvorbis0a libvorbisenc2 libvulkan-dev libvulkan1 libwacom-common libwacom-dev libwacom2 libwayland-bin libwayland-client0 libwayland-cursor0 libwayland-dev libwayland-egl1 libwayland-server0 libwebp6 libwoff1 libx11-dev libx11-xcb-dev libx11-xcb1 libxau-dev libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-icccm4 libxcb-icccm4-dev libxcb-image0 libxcb-image0-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-present0 libxcb-randr0 libxcb-randr0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-render0 libxcb-render0-dev libxcb-shape0 libxcb-shape0-dev libxcb-shm0 libxcb-shm0-dev libxcb-sync-dev libxcb-sync1 libxcb-util0 libxcb-xfixes0 libxcb-xfixes0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xkb1 libxcb1-dev libxcomposite-dev libxcomposite1 libxcursor-dev libxcursor1 libxdamage-dev libxdamage1 libxdmcp-dev libxext-dev libxfixes-dev libxfixes3 libxft-dev libxft2 libxi-dev libxi6 libxinerama-dev libxinerama1 libxkbcommon-dev libxkbcommon-x11-0 libxkbcommon-x11-dev libxkbcommon0 libxrandr-dev libxrandr2 libxrender-dev libxrender1 libxshmfence1 libxslt1.1 libxtst-dev libxtst6 libxxf86vm1 m4 mariadb-common mysql-common nettle-dev odbcinst odbcinst1debian2 pango1.0-tools pkg-kde-tools po-debconf python3-distutils python3-lib2to3 qdoc-qt5 qt5-assistant qtchooser qttools5-dev-tools unixodbc-dev uuid-dev wayland-protocols x11-common x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-dev x11proto-fixes-dev x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-xext-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev 0 upgraded, 331 newly installed, 0 to remove and 0 not upgraded. Need to get 120 MB/120 MB of archives. After this operation, 440 MB of additional disk space will be used. Do you want to continue? [Y/n]
-
@Pablo-J-Rogina said in Installing required libraries on latest Buster for RPi cross-compile:
libqt5gui5
No need to install this one, but you can do so to get all needed packages faster. Else run configure and check the output. Install *-dev packages for everything you need which is marked as "not found/disabled".
-
@jsulm thank you for the suggestion.
I realized that I'd rather give it a try to ArchLinuxARM as the OS, since it provides aarch64 version for RPi3 devices, along with pre-built binaries for such platform.
-
@Pablo-J-Rogina as a follow-up, it looks like my plan with ArchlinuxARM failed.
After installing Qt libraries (and dependencies) on the target, and rsync'ng the sysroot on the host, I was not able to create a proper kit in Qt Creator since there's no qmake that runs on host but refers to cross-compiling settings.
Before moving back to actually cross-compiling Qt libraries, I guess I'll attempt another approach:
- Install pre-built Qt libraries on target
- Install distcc and cross-compile toolchain in host
- Not sure if I need a sysroot on host
- Still not sure how to set the kit in Qt Creator (since the qmake exe will be in target anyway)