Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct


    Qt World Summit: Early-Bird Tickets

    How to run QT application on X-window of the embedded platform

    Mobile and Embedded
    4
    32
    29389
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • U
      uniquez last edited by

      Hi, I have an urgent problem with QT run the embedded platform:
      I have an embedded EVM-Board, which runs Ubuntu with X-window desktop. The system runs like a PC linking monitor, keyboard and mouse.

      Now I want to run a QT application on X-window of the embedded system. After I downloaded QT-lib and QT-application to the file-system and run the QT-application on the terminal, the application could run and the printf-info had no problem. However, there was no QT-window to display on the monitor.

      I guess there is someting wrong with my compliled QT-lib or lack of some QT-tools。

      Please tell me where is my problem, and whether X-window system needs QVFB to run QT application (no matter on X86 or embedded platform)?

      My enviorment:
      hardware platform: TI DM8148(ARM+DSP)
      complile system: Ubuntu 11.04
      complie tool:linux-arm-gnueabi-g++
      embedded system : Ubuntu 11.04
      QT opensource:qt-everywhere-opensource-src-4.8.1.tar.gz

      my install QT-lib configure:
      ./configure -prefix /usr/local/Trolltech/Qt-4.8.1 -arm -xplatform qws/linux-arm-gnueabi-g++ -embedded arm -little-endian -release -opensource -fast -no-accessibility -scripttools -svg -webkit -shared -javascript-jit -qt-sql-sqlite -no-qt3support -no-mmx -no-3dnow -no-sse -no-sse2 -silent -qt-libpng -qt-libjpeg -qt-libtiff -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -qt-freetype -armfpa -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -qt-mouse-linuxinput -no-glib

      board export:
      export QTDIR=/home/qt
      export LD_LIBRARY_PATH=/lib/qt-lib
      export QT_QWS_FONTDIR=/lib/qt-lib/fonts
      export QWS_DISPLAY=“LinuxFb:/dev/fb0”

      1 Reply Last reply Reply Quote 0
      • S
        Serg last edited by

        Hello.
        Your Qt-lib is compiled for embedded Linux (it writes directly to Linux framebuffer, eliminating the need for the X Window System). Don't use "-embedded" option. You should build Qt for X11 to run Qt GUI applications over X-window system. Check installation guide: http://qt-project.org/doc/qt-4.8/install-x11.html . In this sense your system is not embedded.
        QVFB can be used for development and debugging purposes when you writing applications that works without X11: http://doc.qt.nokia.com/4.7-snapshot/qvfb.html .

        1 Reply Last reply Reply Quote 0
        • U
          uniquez last edited by

          Thank for you help very much.

          From what you said, is my Ubuntu system not embedded, even if the system is based on ARM-platform? If it is true, how to configure these parameters : -arm -xplatform qws/linux-arm-gnueabi-g++ -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -qt-mouse-linuxinput ? Because my QT-application will run the ARM-platform, I think these parameters are needed, at least,QT-lib will be compiled using qws/linux-arm-gnueabi-g++.

          By the way, I have a little confuse with the question: in this sense, whether I need compile QVFB to run QT application on my system(ARM+Ubuntu+X-window)?

          Sorry for my bad English. If you understand what I said, please give me some help again.

          1 Reply Last reply Reply Quote 0
          • S
            Serg last edited by

            bq. By the way, I have a little confuse with the question: in this sense, whether I need compile QVFB to run QT application on my system(ARM+Ubuntu+X-window)?

            No, you don't need it.

            bq. From what you said, is my Ubuntu system not embedded, even if the system is based on ARM-platform? If it is true, how to configure these parameters : -arm -xplatform qws/linux-arm-gnueabi-g++ -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -qt-mouse-linuxinput ?

            "-no-gfx-vnc", "-no-gfx-qvfb" - it's default options, just miss it.

            "-qt-gfx-linuxfb", "-qt-gfx-transformed", "-qt-gfx-multiscreen", "-qt-kbd-linuxinput", "-qt-mouse-linuxinput" - it's screen, keyboard and mouse handling options. Miss it and use default values because X11 system manages this things.

            If you compiling Qt on you Ubuntu(arm), try to use default "./configure" options. It will automatically detect your processor type. If you use cross-compilation then you should specify target platform as "linux-arm-gnueabi-g++" (not qws), check "./configure --help".

            1 Reply Last reply Reply Quote 0
            • U
              uniquez last edited by

              Thanks for you help me again.

              Now I am more clearer to my question. I will cross-compile QT-lib and QT-application on my X86-computer, and I will download the compiled QT-lib and QT-application on my EVM-board((ARM+Ubuntu+X-window)) to run. So I need using my cross-compilation(linux-arm-gnueabi-g++) to cross-compile.

              one question i want to make sure:
              [quote author="Serg" date="1337013285"]bq. you should specify target platform as “linux-arm-gnueabi-g++” (not qws),[/quote]
              what does this sentence mean? do you mean configure like this:"./configure -xplatform qws/linux-arm-gnueabi-g++". Especially, what does *''(not qws)" *mean?

              Or you can tell me more details to "./configure", yeah i have check “./configure —help”.
              Thank you so much for your warm-heart!!!

              1 Reply Last reply Reply Quote 0
              • S
                Serg last edited by

                -xplatform used with -embedded only, you should use -platform.

                I'm not sure, but I think it will be correct: "./confugure -platform arm-none-linux-gnueabi-g++". Also you should correctly configure environment variables (e.g. CC, LD, etc.) on your host system for cross-compilation (check cross-compiler documentation).

                1 Reply Last reply Reply Quote 0
                • U
                  uniquez last edited by

                  Yesterday I tried to compile QT-LIB following what you said. However, when I compiling the qt-everywhere-opensource-src-4.8.1, there is a error :

                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                  /home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")

                  My configure is "./confugure -platform arm-none-linux-gnueabi-g++" as you told me , and I think I configure environment variables correctly.
                  Can you tell me where someting wrong is? Thank you very much.

                  1 Reply Last reply Reply Quote 0
                  • S
                    Serg last edited by

                    You should use qmake for target platform (that runs on x86, but produces output for arm), not native qmake.

                    1 Reply Last reply Reply Quote 0
                    • U
                      uniquez last edited by

                      Sorry to reply later beacause I was busy for other things these days.

                      [quote author="Serg" date="1337231425"]You should use qmake for target platform (that runs on x86, but produces output for arm), not native qmake.[/quote]

                      I think "qmake" is a tool used for generating Makefile, so it runs on x86, and produces output(Makefile) for X86 not for arm. Is that true?

                      By the way, I find an other way to get qt-lib for X11 based arm. I link the system with internet, and use “apt-get instal libqt4-dev”, then the ubuntu can download qt-lib for arm. However, when I run a QT test-program(compiled linking downloaded QT-lib) on my system, the program can output a window, but have an error:"undefined symbol: _ZN7QWidget8qwsEventEP8QWSEvent". Can you tell me what wrong about this way to get QT-lib and run QT-program.

                      Thanks for your warm-heart again!!!

                      1 Reply Last reply Reply Quote 0
                      • S
                        Serg last edited by

                        bq. I think “qmake” is a tool used for generating Makefile, so it runs on x86, and produces output(Makefile) for X86 not for arm. Is that true?

                        The qmake tool requires a platform and compiler specific qmake.conf file describing the various default values, to generate the appropriate Makefiles. You should use correct qmake.conf file.

                        bq. However, when I run a QT test-program(compiled linking downloaded QT-lib) on my system, the program can output a window, but have an error:“undefined symbol: _ZN7QWidget8qwsEventEP8QWSEvent”. Can you tell me what wrong about this way to get QT-lib and run QT-program.

                        Looks like your program uses QWidget::qwsEvent(), that is not available in non-embedded linux environments. "Check this thread":http://qt-project.org/forums/viewthread/3043 .

                        1 Reply Last reply Reply Quote 0
                        • U
                          uniquez last edited by

                          The second question.
                          My test program can run on Ubuntu on my PC, which is non-embendded linux environment too. And I am sure my test program (just a MainWindow) not using QWidget::qwsEvent()。

                          1 Reply Last reply Reply Quote 0
                          • U
                            uniquez last edited by

                            The first question.
                            When I use "./configure -xplatform linux-arm-gnueabi-g++ "to configure, there is no error about "/home/xushaofan/qt_4.8.1_pkg/qt-x11-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting “)”)", but it generate an error:

                            "Basic XLib functionality test failed!
                            You might need to modify the include and library search paths by editing
                            QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/mkspecs/linux-arm-gnueabi-g++."

                            I find the variables of QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 is in the /mkspecs/common/linux.conf, and I change the variables to XLib's path, but this error remain.

                            How to solve this problem?

                            1 Reply Last reply Reply Quote 0
                            • S
                              Serg last edited by

                              qt-everywhere-opensource-src-x.y.z/mkspecs directory used for (cross) compiling Qt for various targets.
                              qt-everywhere-opensource-src-x.y.z/mkspecs/qws directory used for (cross) compiling Qt embedded for various targets.

                              So, I checked "mkspecs directory":http://qt.gitorious.org/qt/qt/trees/4.8/mkspecs and found a mistake.

                              bq. I’m not sure, but I think it will be correct: “./configure -platform arm-none-linux-gnueabi-g++”.

                              Correct is: "./configure -platform linux-arm-gnueabi-g++".

                              1 Reply Last reply Reply Quote 0
                              • U
                                uniquez last edited by

                                Correct is: “./configure -platform linux-arm-gnueabi-g++”.

                                But in /mkspecs directory, there is no folder of "linux-arm-gnueabi-g++",and my qt opensource's version is 4.8.1. So I just copied /mkspecs/qws/linux-arm-gnueabi-g++ to /mkspecs. I think what I did is not true, but I dont know how to get linux-arm-gnueabi-g++ in /mkspecs.

                                1 Reply Last reply Reply Quote 0
                                • S
                                  Serg last edited by

                                  About second question.
                                  Your qt test program was built on arm system as a native program? Can you show ldd output?

                                  bq. But in /mkspecs directory, there is no folder of “linux-arm-gnueabi-g++”,and my qt opensource’s version is 4.8.1. So I just copied /mkspecs/qws/linux-arm-gnueabi-g++ to /mkspecs. I think what I did is not true, but I dont know how to get linux-arm-gnueabi-g++ in /mkspecs.

                                  Copy it from qt.gitorious, Are you checked the link "mkspecs directory":http://qt.gitorious.org/qt/qt/trees/4.8/mkspecs ?

                                  1 Reply Last reply Reply Quote 0
                                  • U
                                    uniquez last edited by

                                    My cross compiler is arm-none-linux-gnueabi-g++ not linux-arm-gnueabi-g++.

                                    I copy the folder of linux-arm-gnueabi-g++ from qt.gitorious to /mkspecs, and I replace "linux-arm-gnueabi-g++" for "arm-none-linux-gnueabi-g++ ". Then I configure "./configure -platform linux-arm-gnueabi-g++",there is two errors:

                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/bin/qmake: 1: Syntax error: word unexpected (expecting ")")
                                    Basic XLib functionality test failed!
                                    You might need to modify the include and library search paths by editing
                                    QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/mkspecs/linux-arm-gnueabi-g++.

                                    But if I configure "./configure -xplatform linux-arm-gnueabi-g++" after clean configure, there just an error:

                                    Basic XLib functionality test failed!
                                    You might need to modify the include and library search paths by editing
                                    QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/xushaofan/qt_4.8.1_pkg/qt-everywhere-opensource-src-4.8.1/mkspecs/linux-arm-gnueabi-g++.

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      Serg last edited by

                                      So, there are two ways:

                                      1. Write your own mkspec for arm-none-linux-gnueabi-g++ compiler (or find in google). Then ./configure -arch arm -xplatform arm-none-linux-gnueabi-g++;
                                      2. "sudo apt-get install g++-arm-linux-gnueabi" and try to use mkspec from qt.gitorius. Then ./configure -arch arm -xplatform linux-arm-gnueabi-g++.

                                      bq. Basic XLib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11

                                      You need to specify X11 include files and libraries, arm libs!

                                      1 Reply Last reply Reply Quote 0
                                      • U
                                        uniquez last edited by

                                        You need to specify X11 include files and libraries, arm libs!

                                        ================================

                                        I have specified X11 include files and libraries(for arm)' path by modifing linux.conf in /mkspecs/common, but the error remain. Is it right?

                                        It is too later tonight, I will compile QT-lib following what you said tomorrow.
                                        Anyway, thank you help me again and again.

                                        1 Reply Last reply Reply Quote 0
                                        • U
                                          uniquez last edited by

                                          By the way, the X11 include files and libraries are provided in filesytems by TI ezsdk.

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            Serg last edited by

                                            bq. I have specified X11 include files and libraries(for arm)’ path by modifing linux.conf in /mkspecs/common, but the error remain. Is it right?

                                            I'm think it's right.

                                            This error can be when libXext is missed.
                                            Here is "Qt for X11 requirements":http://qt-project.org/doc/qt-4.8/requirements-x11.html. Ensure that you have all required libs.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post