OpenSuse "cannot connect X Server" error
-
wrote on 8 May 2014, 07:44 last edited by
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
-
wrote on 8 May 2014, 08:18 last edited by
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.
-
wrote on 8 May 2014, 08:30 last edited by
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 ??
-
wrote on 8 May 2014, 08:36 last edited by
I choosed it because of its minimal linux, yeah there is no graphical Interface only console but it doesnt mean we can not work Qt Qui apps.I tried to install qt toolchain.This problem should be occured else.
-
wrote on 8 May 2014, 08:40 last edited by
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.
-
wrote on 8 May 2014, 08:48 last edited by
I understood what you mean but QWS is kind of windowing sytem and I used it on ARM Board and there is no GUI on it but qt provides a QWS and framebuffer , app works on it.
-
wrote on 8 May 2014, 08:50 last edited by
I tried to Remote Deploy and it says:
"testGUI: cannot connect to X server :0.0"How can I solve this problem , I searched net but I couldnt solve problem.
-
wrote on 8 May 2014, 08:55 last edited by
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). -
wrote on 8 May 2014, 09:19 last edited by
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.
-
wrote on 8 May 2014, 10:27 last edited by
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 ?
-
wrote on 8 May 2014, 10:30 last edited by
I wrote simple console application It is working perfect but GUIs doesnt work.
-
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.
-
wrote on 8 May 2014, 11:29 last edited by
Yeah SGaist I can see /dev/fb0.
is this means I have frame buffer , how can I run it -
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
-
wrote on 8 May 2014, 13:37 last edited by
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.
-
wrote on 9 May 2014, 05:42 last edited by
Hi,
SGAist , Which one do you suggest ? I thought to configure like "./configure -embedded i386". -
wrote on 9 May 2014, 06:12 last edited by
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
1/22