OpenSuse "cannot connect X Server" error
-
Hi SGaist,
thanks for you answer but actually I tried this and doesnt work. I installed qt everywhere 4.8.6, In usr/local/Trolltech/4.8.6 file. I set chain to QtCreator and chosed generic linux device and created device with root@IP. How can I understand program is running on X11 or FrameBuffer.
-
From what I remember of opensuse JEOS (but check on internet and documentation of opensuse), the JEOS is a very minimal version of linux and it does not come with any graphical interface.
If I'm right, you cannot run any GUI application (Qt or not Qt-based).So, a silly question: Do you see any graphic interface on the Atom device, or you just see the terminal ??
-
I'm sorry to get you bad news ... but if there is no graphical interface you cannot run graphical applications !!
Think about that: how can be possible to show a user interface if there is no graphical system underlying ??No installed graphical interface (X-Server) IMPLY No possibility to run GUI applications !!!
You can only run app without user interfaces.
-
Again ... if you don't install a X11 system on your linux box, you'll never solve this problem.
QWS is not a windowing system .. it's a particular modality on which Qt Gui application are executed, but again, without any window systems underlying there is no hope to run a GUI application.
So, get to the opensuse documentation, and install the X11 system or something else (like Wayland). -
To access a remote display, you need to set an environment variable. In you case, the display ":0.0" refers to a local X-Server.
For example, you connect a Linux computer with a running X-Server to the network, then on that computer execute the command "sudo xhost +". This allows other computers to access your display.
Then on the embedded system open a shell and enter "export DISPLAY=192.168.1.2:0.0" before you start the program in the same shell. Of yourse, you have to enter the IP-Address of the Linux computers that provides the X-Server.
-
I wrote "sudo xhost +" on ubuntu 14.04 which is my development machine then “export DISPLAY=192.168.14.129:0.0” on my opensuse JEOS Intel Atom machine but I doesnt work. On ubuntu qtcreator it returns :
"testGUI: cannot connect to X server :0.0
Application finished with exit code 1."When I working with Arm Board there is green screen is coming while Qt apps are working , why does it not coming now? On Arm I was using minimal linux and it was not better than OpenSuse I can not understand now. Do I install any package about qt, qtembedded or Gtk or QWS ?
-
Then the question here is do you have a frame buffer device ? Something like /dev/fb0 ?
@ Gianluca qws was designed to run on system without X. The minimal requirement was a functional linux frame buffer. There were several plugins like e.g. DirectFB. So it might be used here if the minimal conditions are present.
-
Build Qt with the -embedded option like you did for ARM but don't cross-compile it. Then use that version of Qt to build your program and copy it on your target so that it will also be used there
-
I realized something that while I can configuring qt elsewhere 4.8.6 I only used "./configure".But Actually I didnt add -embedded prefix to configuration and maybe gui codes are tying to connect X server instead of Virtual Frame Buffer.I will reconfigure qt and then I will turn.
thanks. -
Don't forget to clean before you call configure again, you can also build several plugins at once e.g. the VFB and the linux frame buffer/DirectFB/what you need. It will avoid you to build them again later when you want to run your application on your target.
-
I found something on net for "cannot connect X server "in below,
Solution:
- Place the correct QT libraries on the embedded platform and specify the path using LD_LIBRARY_PATH (I havent tried this)
- use -static switch in the QT library ./configure. This will pretent the executable from looking for the QT libraries. (I tried this and it works). However this will still ask for /lib/fonts, which i had to copy from the host environment.
I tried first one and problem still occurs.I couldnt understand second one how can I add "-static"?
-
It will only work when you will be using an embedded version of Qt.
It will depend on your target OS either x86 or x86_64
-
As long as you are working on your desktop use the standard Qt. Once you are ready to test it on your target, compile your application with the embedded version and start that version on your board, provided you also put the embedded Qt libs in the right place on the target