QT embedded with X11



  • Hi,

    I'm trying build QT 4.8.2 for embedded platform. But instead of using the default linux framebuffer, I want to use X11 window system. But I'm not able to build QT with -xvideo -xrender -ximage options. When the QT figures out, its being cross compiled, the 'x' options seems to have been automatically dropped. How do I proceed ? How do I cross compile and will still be able to make use of X11 ?

    Thanks.


  • Lifetime Qt Champion

    Hi and welcome to DevNet,

    Qt embedded is targeted to device that don't have an X11 server running. If you have one you can cross-compile the standard Qt libraries. Though depending on your device distribution this might have already be done for you.

    Hope it helps

    On a side note QT is for Apple's QuickTime, Qt is for our favorite framework :)



  • Oops, ok.

    Actually, I'm facing problem with crosscompiling with the standard Qt libraries.

    What I need is,

    Building on: qws/linux-x86-g++
    Building for: qws/linux-arm-g++
    Architecture: arm
    Host architecture: i386

    My configure looks like,
    PKG_CONFIG_SYSROOT_DIR="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot" PKG_CONFIG="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/bin/pkg-config" PKG_CONFIG_PATH="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/pkgconfig:" MAKEFLAGS=" -j8" ./configure -silent -force-pkg-config -opensource -confirm-license -largefile -qt3support -nomake examples -nomake demos -no-glib -no-icu -no-neon -no-avx -no-javascript-jit -xsync -xcursor -xfixes -xinput -xrender -depths 8,16,32 -no-gfx-linuxfb -no-gfx-transformed -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -no-gfx-directfb -no-mouse-pc -no-mouse-linuxtp -no-mouse-linuxinput -no-mouse-tslib -no-mouse-qvfb -no-kbd-tty -no-kbd-linuxinput -no-kbd-qvfb -release -shared -little-endian -embedded arm -no-gif -no-libmng -qt-zlib -system-libjpeg -system-libpng -no-libtiff -no-freetype -no-openssl -no-sql-sqlite -no-xmlpatterns -multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-svg -no-webkit -script -no-scripttools -no-javascript-jit -no-stl -declarative -no-xinerama -no-cups -no-nis -no-accessibility -no-separate-debug-info -prefix /usr -plugindir /usr/lib/qt/plugins -hostprefix /home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot -fast -no-rpath

    But, I am not able to see support enabled for X11.

    Build .................. libs docs translations
    Configuration .......... silent cross_compile release shared dll embedded largefile precompile_header exceptions_off minimal-config small-config medium-config large-config full-config qt3support embedded reduce_exports ipv6 clock-gettime clock-monotonic mremap getaddrinfo ipv6ifname getifaddrs inotify system-jpeg no-mng system-png png no-gif no-tiff no-freetype zlib alsa concurrent multimedia script declarative release
    Debug .................. no
    Qt 3 compatibility ..... yes
    QtDBus module .......... no
    QtConcurrent code ...... yes
    QtGui module ........... yes
    QtScript module ........ yes
    QtScriptTools module ... no
    QtXmlPatterns module ... no
    Phonon module .......... no
    Multimedia module ...... yes
    SVG module ............. no
    WebKit module .......... no
    JavaScriptCore JIT ..... no
    Declarative module ..... yes
    Declarative debugging ...yes
    Support for S60 ........ no
    Symbian DEF files ...... no
    STL support ............ no
    PCH support ............ yes
    MMX/3DNOW/SSE/SSE2/SSE3. no/no/no/no/no
    SSSE3/SSE4.1/SSE4.2..... no/no/no
    AVX..................... no
    iWMMXt support ......... no
    NEON support ........... no
    IPv6 support ........... yes
    IPv6 ifname support .... yes
    getaddrinfo support .... yes
    getifaddrs support ..... yes
    Accessibility .......... no
    NIS support ............ no
    CUPS support ........... no
    Iconv support .......... no
    Glib support ........... no
    GStreamer support ...... no
    PulseAudio support ..... no
    Large File support ..... yes
    GIF support ............ no
    TIFF support ........... no
    JPEG support ........... plugin (system)
    PNG support ............ yes (system)
    MNG support ............ no
    zlib support ........... yes
    Session management ..... no
    Embedded support ....... arm
    Freetype2 support ...... no
    Graphics (qt) ..........
    Graphics (plugin) ......
    Decorations (qt) ....... styled windows default
    Decorations (plugin) ...
    Keyboard driver (qt) ...
    Keyboard driver (plugin) ..
    Mouse driver (qt) ......
    Mouse driver (plugin) ..
    OpenGL support ......... no
    OpenVG support ......... no
    OpenSSL support ........ no
    Alsa support ........... yes
    ICD support ............ no
    libICU support ......... no



  • I need Qt to be using X11 instead of the default linux framebuffer. How else I can proceed ?


  • Lifetime Qt Champion

    Do you have the x11 arm libs ?



  • Yes, I do.



  • I need X server to be running on my board. But the Qt application built (embedded) uses linux framebuffer. That's the reason I'm looking into cross compiling Qt with X11.


  • Lifetime Qt Champion

    Then you don't want to use the qws mkspecs.

    You have to remove the embedded option and IRCC use -arch arm -xplatform linux-arm-g++ (you might want to make your own mkspec for your toolchain setup so you can reuse it while programming)

    Hope it helps



  • Yes It did, thanks a ton! :)
    Now when I want to run a Qt application, how do I specify the display ?
    Like I need to start the X server and do ./QtApp -display =:0 Something like this ?


  • Lifetime Qt Champion

    Something like that yes, unless you have a window manager, you should then also be able to start your application from there



  • When I'm cross compiling, I'm facing this kind of issue.

    $(my_sysroot_path)/usr/include/QtCore/qatomic_armv5.h: Assembler messages:
    $(my_sysroot_path)/usr/include/QtCore/qatomic_armv5.h:131: Error: no such instruction: `swpb %al,%dl,[%esi]'

    My configure variables look like

    PKG_CONFIG_SYSROOT_DIR="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot" PKG_CONFIG="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/bin/pkg-config" PKG_CONFIG_PATH="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/pkgconfig:" MAKEFLAGS=" -j8" ./configure -developer-build -opensource -nomake examples -nomake tests -no-gtkstyle -confirm-license -xplatform linux-omap4-g++ -force-pkg-config -hostprefix /home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot -largefile -nomake examples -nomake demos -no-glib -no-icu -no-neon -no-avx -no-javascript-jit -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-iconv -no-icu -no-dbus -no-glib -no-avx -no-neon -no-gif -system-libpng -system-libjpeg -no-openssl -prefix $PWD/qtbase -hostprefix /home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot -no-audio-backend -no-nis -platform linux-g++



  • I was using Qt verison 4.8.4.

    Just to verfy I tried using Qt 5.0.2 using configure options:

    PKG_CONFIG_SYSROOT_DIR="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot" PKG_CONFIG="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/bin/pkg-config" PKG_CONFIG_PATH="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/pkgconfig:" MAKEFLAGS=" -j8" ./configure -silent -force-pkg-config -opensource -confirm-license -largefile -nomake examples -nomake demos -no-glib -no-icu -no-neon -no-avx -no-javascript-jit -no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -xsync -xcursor -xfixes -xinput -xrender -xplatform linux-omap4-g++ -release -shared -no-gif -qt-zlib -system-libjpeg -system-libpng -no-openssl -no-sql-sqlite -no-audio-backend -no-javascript-jit -no-xinerama -no-cups -no-nis -no-accessibility -no-separate-debug-info -plugindir /usr/lib/qt/plugins -hostprefix /home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot -no-rpath -v -device linux-omap4-g++ -make libs -device-option CROSS_COMPILE="/home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/bin/arm-linux-gnueabihf-" -qt-xcb -no-opengl -no-glib -sysroot /home/carol/OMAP_BUILDROOT/buildroot-2012.11.1/output/host/usr/arm-buildroot-linux-gnueabi/sysroot -no-kms -no-directfb -no-eglfs -xrender

    I came across bunch of errors.

    make[5]: Entering directory /home/carol/Documents/Omap/QT_GIT/qt-everywhere-opensource-src-5.0.2/qtdeclarative/src/plugins/qmltooling/qmldbg_qtquick2' compiling qquickviewinspector.cpp In file included from ../../../../include/QtQuick/qsggeometry.h:1:0, from ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsgnode.h:45, from ../../../../include/QtQuick/qsgnode.h:1, from ../../../../include/QtQuick/5.0.2/QtQuick/private/../../../../../src/quick/scenegraph/qsgcontext_p.h:54, from ../../../../include/QtQuick/5.0.2/QtQuick/private/qsgcontext_p.h:1, from ../../../../include/QtQuick/5.0.2/QtQuick/private/../../../../../src/quick/items/qquickwindow_p.h:60, from ../../../../include/QtQuick/5.0.2/QtQuick/private/../../../../../src/quick/items/qquickitem_p.h:62, from ../../../../include/QtQuick/5.0.2/QtQuick/private/qquickitem_p.h:1, from qquickviewinspector.cpp:49: ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsggeometry.h:117:25: error: ‘GLenum’ has not been declared ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsggeometry.h:118:12: error: ‘GLenum’ does not name a type ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsggeometry.h:114:33: error: ‘GL_UNSIGNED_SHORT’ was not declared in this scope ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsggeometry.h: In member function ‘int QSGGeometry::sizeOfIndex() const’: ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsggeometry.h:290:25: error: ‘GL_UNSIGNED_SHORT’ was not declared in this scope ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsggeometry.h:291:30: error: ‘GL_UNSIGNED_BYTE’ was not declared in this scope ../../../../include/QtQuick/../../src/quick/scenegraph/coreapi/qsggeometry.h:292:30: error: ‘GL_UNSIGNED_INT’ was not declared in this scope <...> make[3]: *** [sub-qmltooling-make_first] Error 2 make[3]: Leaving directory/home/carol/Documents/Omap/QT_GIT/qt-everywhere-opensource-src-5.0.2/qtdeclarative/src/plugins'
    make[2]: *** [sub-plugins-make_first-ordered] Error 2
    make[2]: Leaving directory /home/carol/Documents/Omap/QT_GIT/qt-everywhere-opensource-src-5.0.2/qtdeclarative/src' make[1]: *** [sub-src-make_first] Error 2 make[1]: Leaving directory/home/carol/Documents/Omap/QT_GIT/qt-everywhere-opensource-src-5.0.2/qtdeclarative'
    make: *** [module-qtdeclarative-make_first] Error 2

    When i tried to google search for it, I learnt its because of the opengl. I have used -no-opengl option and I'm still facing the issue. Can you help me with this ?

    Thanks,
    Carol


  • Lifetime Qt Champion

    I would say you have to disable QtQuick from building, but right now i don't know what option to add or folder to remove in order to do that... (It might be as simple as to remove the qtdeclarative folder before configuration)

    Hope it helps


Log in to reply
 

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