OpenSuse "cannot connect X Server" error
-
Hi,
I am working on Intel Atom N450 and openSuse JEOS is running on it.I just want to open Qt application on the board but actually it doesnt work.
I first loaded helloworld app it worked but when I tried to open GUI application like calculator with "./calculator -qws" it returns "calculator: cannot connect to X server".
OpenSuse "uname -a" "Linux pcm3362 3.11.10-7-default #1 SMP Mon Feb 3 09:41:24 UTC 2014 (750023e) i686 i686 i386 GNU/Linux"Not: I use Ubuntu 14.04 and I installed qt everywhere 4.8.6 and ubuntu "uname -a" "Linux ubuntu 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:08:14 UTC 2014 i686 i686 i686 GNU/Linux".
Do I need cross-compile from pc to Atom board* , I thougt both machines are Intel I dont need ,isnt it* ,
Pls help me .
Thanks,
Umit -
Hi and welcome to devnet,
You don't need to cross-compile however you need to compile your Qt for embedded. Otherwise you have a Qt version that will use the X server.
Hope it helps
-
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