2009-03-14 21 views
27

Compilación en Fedora 10.No se puede conectar al servidor X: 0.0 con una aplicación Qt

Acabo de iniciar mi primera aplicación GUI qt. Usé todas las configuraciones predeterminadas.

Es solo una forma simple. Construye OK sin ningún error. Pero cuando intento ejecutar la aplicación. Me sale el siguiente mensaje:

Starting /home/rob/projects/qt/test1/test1/test1... 
No protocol specified 
test1: cannot connect to X server :0.0 

Gracias por cualquier consejo,

Respuesta

40

Las causas generales sobre este son los siguientes:

  1. DISPLAY no se establece en el medio ambiente.
    Solución:

    export DISPLAY=:0.0 
    ./myQtCmdHere 
    

    (Este no parece ser el culpable, aunque, como su dicho que X mostrará su intentando conectar con Asimismo, no es siempre 0.0, pero la mayor parte. el tiempo es)

  2. -usuario no autorizado intenta ejecutar la aplicación X
    Solución (usuario como X poseer, es decir: usted mismo)

    xhost +local:root # where root is the local user you want to grant access to. 
    
+1

Solo un rápido seguimiento.¿Qué hace esto: exportar DISPLAY =: 0.0 y por qué mi aplicación falló debido a eso? Gracias, – ant2009

+0

su interfaz de pantalla ejecuta un modelo de servidor-cliente. DISPLAY le dice a las aplicaciones dónde está su pantalla, generalmente IP: formato DISPLAY.SCREEN, pero sin IP usa localhost. Pero dadas las condiciones adecuadas, puede 'lanzar' y la aplicación en cualquier pantalla accesible de red. –

4

Además, si desea que su servidor X pueda recibir conexión a través de TCP, en la actualidad casi siempre debe habilitarlo explícitamente. Para probar si eres servidor es lo que permite conexiones TCP remoto tratan:

telnet 127.0.0.1 6000

Si telnet es capaz de conectar, a continuación, el servidor X está a la escucha. Si no puede, tampoco lo hará ninguna aplicación X remota y deberá habilitar conexiones TCP remotas en su servidor.

2

Agregando a las respuestas anteriores. Estaba en una situación similar mientras ejecutaba las pruebas para Code2Pdf en travis. He resuelto el problema usando xvfb-run. Citando de la página de manual,

XVFB plazo es un envoltorio para el comando Xvfb (1x), que simplifica la tarea de ejecución de comandos (normalmente un cliente X, o una secuencia de comandos que contiene una lista de clientes que se ejecute) dentro de un entorno virtual de servidor X.

El guión que escribí fue:

check_install_xvfb() { # check and install xvfb 
    if hash xvfb-run 2>/dev/null; then 
     : 
    else 
     sudo apt-get update 
     sudo apt-get upgrade 
     sudo apt-get install xvfb 
    fi 
} 
check_install_xvfb 
export DISPLAY=localhost:1.0 
xvfb-run -a bash .misc/tests.sh 
# .misc/tests.sh is script that runs unit tests. You can replace it with something suitable to you. 

favor, tenga con mi estilo de código de fiesta. Soy un programador de noob bash.

Ejecutar el script anterior me ayudó. Puede ver failing build y passing build.

Espero que ayude

Cuestiones relacionadas