Solved QtMultimedia can't detect libs during cross-compilation
-
Re: Qt5.12.0 configure for iMx6 issue
Hi. I have another one trouble with cross-compilation of Qt Multimedia,
I have installed OpenGL ES libs (with dev packages) and GStreamer libs (also with -dev packages).QtCore detected all needed libs, e.g. OpenGL ES 2.0 and OpengGL ES 3.0 (here is QtCore config)
However, Qt Multimedia doesn't see needed libraries (e.g Vivante GPU and GStreamer1.0)
Running configuration tests... Checking for ALSA... no Checking for Vivante GPU... no Checking for GStreamer 1.0... no Checking for GStreamer 0.10... no Checking for Video for Linux... yes Checking for OpenAL... no Checking for PulseAudio >= 0.9.10... no Checking for libresourceqt5... no Done running configuration tests. Configure summary: Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux ........................ yes OpenAL ................................. no PulseAudio ............................. no Resource Policy (libresourceqt5) ....... no Windows Audio Services ................. no DirectShow ............................. no Windows Media Foundation ............... no
Here is installed packaged on destination system (ubuntu1804-armhf):
libgstreamer1.0-0 libgstreamer1.0-dev gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-base-apps libgstreamer-plugins-base1.0-dev
I tried to check PKG_CONFIG and some includes on destination system (ubuntu1804-armhf):
$ sudo chroot "sysroot" pkg-config --libs gstreamer-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 $ sudo chroot "sysroot" ls /usr/include/GLES2 gl2.h gl2ext.h gl2platform.h gl2rename.h gl2unname.h $sudo chroot "sysroot" ls /usr/include/gstreamer-1.0/gst allocators glib-compat.h gstbus.h gstcontrolbinding.h gstdynamictypefactory.h gstghostpad.h gstobject.h gstpoll.h gststreamcollection.h gsttoc.h gstutils.h rtsp app gst.h gstcaps.h gstcontrolsource.h gstelement.h gstinfo.h gstpad.h gstpreset.h gststreams.h gsttocsetter.h gstvalue.h sdp audio gstallocator.h gstcapsfeatures.h gstdatetime.h gstelementfactory.h gstiterator.h gstpadtemplate.h gstpromise.h gststructure.h gsttracer.h gstversion.h tag base gstatomicqueue.h gstchildproxy.h gstdebugutils.h gstelementmetadata.h gstmacros.h gstparamspecs.h gstprotection.h gstsystemclock.h gsttracerfactory.h math-compat.h video check gstbin.h gstclock.h gstdevice.h gstenumtypes.h gstmemory.h gstparse.h gstquery.h gsttaglist.h gsttracerrecord.h net controller gstbuffer.h gstcompat.h gstdevicemonitor.h gsterror.h gstmessage.h gstpipeline.h gstregistry.h gsttagsetter.h gsttypefind.h pbutils fft gstbufferlist.h gstconfig.h gstdeviceprovider.h gstevent.h gstmeta.h gstplugin.h gstsample.h gsttask.h gsttypefindfactory.h riff gl gstbufferpool.h gstcontext.h gstdeviceproviderfactory.h gstformat.h gstminiobject.h gstpluginfeature.h gstsegment.h gsttaskpool.h gsturi.h rtp
As I see (from QtCore config) PKG_CONFIG and ToolChain were setted right and all needed packages were installed.
Any ideas?
What I'm doing wrong?Thanks!
-
Hi,
You should add the -v option to configure to see what exactly is happening with the GStreamer related tests.
-
@SGaist Thanks for answer. I think you mean parameter "-v" as "verbose" for "./configure". It is right for QtBase, because it configures via "./configure".
But there is not "configure" script in qtmultimedia folder and QtMultimedia configures via qmake. So parameter -v means "version" (not "verbose"):
cd qtmultimedia ../sysroot/opt/Qt5.9/bin/qmake -v QMake version 3.1 Using Qt version 5.9.8 in ../sysroot/opt/Qt5.9/lib
-
@SGaist here is query output:
<SYSROOT_PATH>/opt/Qt5.9/bin/qmake -query QT_SYSROOT:<SYSROOT_PATH> QT_INSTALL_PREFIX:<SYSROOT_PATH>/opt/Qt5.9 QT_INSTALL_PREFIX/raw:/opt/Qt5.9 QT_INSTALL_ARCHDATA:<SYSROOT_PATH>/opt/Qt5.9 QT_INSTALL_ARCHDATA/raw:/opt/Qt5.9 QT_INSTALL_DATA:<SYSROOT_PATH>/opt/Qt5.9 QT_INSTALL_DATA/raw:/opt/Qt5.9 QT_INSTALL_DOCS:<SYSROOT_PATH>/opt/Qt5.9/doc QT_INSTALL_DOCS/raw:/opt/Qt5.9/doc QT_INSTALL_HEADERS:<SYSROOT_PATH>/opt/Qt5.9/include QT_INSTALL_HEADERS/raw:/opt/Qt5.9/include QT_INSTALL_LIBS:<SYSROOT_PATH>/opt/Qt5.9/lib QT_INSTALL_LIBS/raw:/opt/Qt5.9/lib QT_INSTALL_LIBEXECS:<SYSROOT_PATH>/opt/Qt5.9/libexec QT_INSTALL_LIBEXECS/raw:/opt/Qt5.9/libexec QT_INSTALL_BINS:<SYSROOT_PATH>/opt/Qt5.9/bin QT_INSTALL_BINS/raw:/opt/Qt5.9/bin QT_INSTALL_TESTS:<SYSROOT_PATH>/opt/Qt5.9/tests QT_INSTALL_TESTS/raw:/opt/Qt5.9/tests QT_INSTALL_PLUGINS:<SYSROOT_PATH>/opt/Qt5.9/plugins QT_INSTALL_PLUGINS/raw:/opt/Qt5.9/plugins QT_INSTALL_IMPORTS:<SYSROOT_PATH>/opt/Qt5.9/imports QT_INSTALL_IMPORTS/raw:/opt/Qt5.9/imports QT_INSTALL_QML:<SYSROOT_PATH>/opt/Qt5.9/qml QT_INSTALL_QML/raw:/opt/Qt5.9/qml QT_INSTALL_TRANSLATIONS:<SYSROOT_PATH>/opt/Qt5.9/translations QT_INSTALL_TRANSLATIONS/raw:/opt/Qt5.9/translations QT_INSTALL_CONFIGURATION:<SYSROOT_PATH>/opt/Qt5.9/etc/xdg QT_INSTALL_CONFIGURATION/raw:/opt/Qt5.9/etc/xdg QT_INSTALL_EXAMPLES:<SYSROOT_PATH>/opt/Qt5.9/examples QT_INSTALL_EXAMPLES/raw:/opt/Qt5.9/examples QT_INSTALL_DEMOS:<SYSROOT_PATH>/opt/Qt5.9/examples QT_INSTALL_DEMOS/raw:/opt/Qt5.9/examples QT_HOST_PREFIX:<SYSROOT_PATH>/opt/Qt5.9 QT_HOST_DATA:<SYSROOT_PATH>/opt/Qt5.9 QT_HOST_BINS:<SYSROOT_PATH>/opt/Qt5.9/bin QT_HOST_LIBS:<SYSROOT_PATH>/opt/Qt5.9/lib QMAKE_SPEC:linux-g++ QMAKE_XSPEC:devices/linux-imx6-g++ QMAKE_VERSION:3.1 QT_VERSION:5.9.8
And here is config.log: https://pastebin.com/c58pvyNt
Something strange bacause all includes and sysroot were setted right:
+ cd <CACHE_PATH>/qtmultimedia/config.tests/gstreamer && MAKEFLAGS= make > <CACHE_PATH>/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=hard --sysroot=<SYSROOT_PATH> -pthread -I//usr/include/gstreamer-1.0 -I//usr/include/orc-0.4 -I//usr/include/gstreamer-1.0 -I//usr/include/glib-2.0 -I//usr/lib/arm-linux-gnueabihf/glib-2.0/include -g -w -fPIC -I. -I<SYSROOT_PATH>/opt/Qt5.9/mkspecs/devices/linux-imx6-g++ -o main.o main.cpp > In file included from //usr/include/glib-2.0/glib/galloca.h:32:0, > from //usr/include/glib-2.0/glib.h:30, > from //usr/include/gstreamer-1.0/gst/gst.h:27, > from main.cpp:31: > //usr/include/glib-2.0/glib/gtypes.h:32:10: fatal error: glibconfig.h: No such file or directory > #include <glibconfig.h>
However glibconfig.h exists:
$ sudo chroot "<SYSROOT_PATH>" pkg-config --cflags glib-2.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include $ sudo chroot "<SYSROOT_PATH>" ls /usr/lib/arm-linux-gnueabihf/glib-2.0/include glibconfig.h
-
@r3d9u11 Well, topic was solved with previous version of toolchain (g++ v6)