2009-03-14 2 views
27

Compilare su Fedora 10.Impossibile connettersi al server X: 0.0 con un'applicazione Qt

Ho appena avviato la mia prima applicazione per la GUI qt. Ho usato tutte le impostazioni predefinite.

È solo una forma semplice. Costruisce OK senza errori. Ma quando provo a eseguire l'applicazione. Ottengo il seguente messaggio:

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

Grazie per qualsiasi consiglio,

risposta

40

Le cause generali per questo sono i seguenti:

  1. DISPLAY non è impostata nell'ambiente.
    Soluzione:

    export DISPLAY=:0.0 
    ./myQtCmdHere 
    

    (Questo non sembra essere quello in colpa, però, come la sua dice che X visualizzare il suo tentativo di connessione a Inoltre, la sua non sempre 0.0, ma la maggior parte. il tempo è)

  2. non autorizzato tenta di eseguire l'applicazione X
    Solution (utente come X possedere utente, vale a dire: voi stessi)

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

Solo un rapido follow-up.Cosa fa questo: export DISPLAY =: 0.0 e perché la mia applicazione ha avuto esito negativo a causa di esso? Grazie, – ant2009

+0

l'interfaccia di visualizzazione esegue un modello client-server. DISPLAY indica le applicazioni in cui si trova lo schermo, generalmente in formato IP: DISPLAY.SCREEN, ma senza IP utilizza localhost. Ma date le giuste condizioni, puoi "lanciare" e app su qualsiasi display accessibile alla rete. –

4

Inoltre, se desideri che il tuo server X sia in grado di ricevere la connessione tramite TCP, in questi giorni devi quasi sempre abilitarlo esplicitamente. Per verificare se sei server è permettere connessioni TCP remoto cercano:

telnet 127.0.0.1 6000

Se telnet è in grado di connettersi, quindi il server X è in ascolto. In caso contrario, non sarà possibile alcuna applicazione X remota e sarà necessario abilitare le connessioni TCP remote sul server.

2

Aggiunta alle risposte precedenti. Ero in una situazione simile durante l'esecuzione di test per Code2Pdf su travis. Ho risolto il problema utilizzando xvfb-run. Citando la pagina di manuale,

Xvfb-run è un wrapper per il comando Xvfb (1x), che semplifica il compito di eseguire comandi (in genere un client X, o di uno script che contiene una lista di clienti per essere eseguito) entro un ambiente X server virtuale.

Lo script che ho scritto era:

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. 

Si prega di tenere con il mio stile di codice bash. Sono un programmatore di noob bash.

L'esecuzione dello script precedente mi ha aiutato. È possibile vedere failing build e passing build.

Spero che sia utile