2017-08-29 6 views
0

Je suis en train d'exécuter le code exemple suivant à l'aide de mon NetBeans IDE:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <dbus/dbus.h> 

int main() { 
    DBusConnection *connection = NULL; 
    DBusError error; 
    char buffer[1024]; 

    dbus_error_init(&error); 
    connection = dbus_bus_get(DBUS_BUS_SESSION, &error); 
    if (dbus_error_is_set(&error)) { 
     fprintf(stderr, "%s", error.message); 
     abort(); 
    } 

    puts("This is my unique name"); 
    puts(dbus_bus_get_unique_name(connection)); 
    fgets(buffer, sizeof(buffer), stdin); 

    return 0; 
} 

D'un excellent tutoriel: DBUS TUTORIAL USING THE LOW-LEVEL API

J'ai ma configuration sans tête Pi pour SSH et ont installé tous les bibliothèques nécessaires au développement de dbus.

cependant, lors de l'exécution du programme dans NetBeans i l'erreur suivante

Impossible de lancer automatiquement un dbus-daemon sans $ DISPLAY pour X11

/usr/bin/dbus-launch terminé anormalement avec le erreur suivante: erreur Autolaunch: l'initialisation X11 a échoué.

Notez que j'ai X11 forwarding activé dans mes propriétés de l'hôte à distance sur Netbeans

je peux voir que, si je SSH dans le Pi et moi-même echo $ DISPLAY vous ne voyez rien, vide.

Jusqu'à présent, j'ai essayé:

in /etc/ssh/sshd_config 
X11Forwarding yes 
X11DisplayOffset 10 
X11UseLocalhost no 
AllowTcpForwarding yes 

ne fonctionne pas.

essayé de placer une variable d'environnement d'exécution à

DISPLAY export DISPLAY=$HOSTNAME:0.0 

0x212d0 "org.freedesktop.DBus.Error.Spawn.ExecFailed" 
0x21fe8 "/usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.\\n" 

ne fonctionnait pas.

essayé

In /etc/ssh/ssh_config 
ForwardX11 yes 

ne fonctionnait pas.

S'agit-il d'obtenir mon installation Pi pour X11 ou de configurer mon environnement netbeans pour exécuter le programme avec certains paramètres?

Merci d'avance pour tout conseil.

mise à jour le 30 août 2017:

je fait une nouvelle installation de Debian et a suivi la réponse de Gilles:

https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely ...

Je peux confirmer: dans /etc/ssh/sshd_config X11Forwarding yes X11DisplayOffset 10. ..

xauth est installé sur la télécommande Pi.

J'ai installé XQuartz sur mon client mac. Sur ssh -X pi @ IPaddress, xquartz s'ouvre et si je echo $DISPLAY sur le Pi distant obtiens localhost:12.0 ... le nombre change avec chaque terminal.

Actuellement, si ont mal réglé l'environnement du projet dans NetBeans avec:

DISPLAY = localhost: 11.0 (ce qui est faux, car le nombre change à chaque connexion ssh à la Pi à distance). Donc quand j'essaye d'exécuter le programme, NetBeans va se bloquer et je ne peux pas déboguer non plus. Ma question à ce stade est, comment puis-je définir l'environnement DISPLAY correctement pour NetBeans de sorte que chaque fois qu'il établit une connexion SSH au Pi distant et demande le renvoi X11, il aura le bon $ DISPLAY?

Répondre

0

Autolaunch de dbus-daemon ne fonctionne que sous une session X11. Il est sinon désactivé car il n'y a aucun moyen pour différentes applications d'établir une instance commune du démon dbus. Si vous voulez exécuter un démon dbus sur votre pi box indépendamment de X11, vous devez probablement le configurer pour lancer le démon dbus au démarrage, et exporter l'adresse de bus dans la variable d'environnement 0USDBUS_SESSION_BUS_ADDRESS.

Pour plus d'informations voir https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690530

Si d'autre part vous voulez utiliser votre session X à distance, vous devez corriger votre mal configuré le transfert X11 de telle sorte que la variable d'environnement DISPLAY est réglé correctement lorsque vous ssh dans le Pi . Voir par exemple https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely.

+0

Merci pour votre réponse. J'ai suivi la réponse de Gilles dans le lien que vous avez fourni. et également installé XQuartz sur le mac client. S'il vous plaît voir les mises à jour dans ma question principale. Comment puis-je définir correctement l'environnement $ DISPLAY dans mon projet NetBeans afin que chaque fois que netbeans établit une connexion SSH avec le Pi distant, il définit correctement un DISPLAY? Merci beaucoup. –

+0

@Dan_R Si vous avez une nouvelle question, posez une nouvelle question. –

+0

Excuses, vous avez raison ... J'ai soulevé une nouvelle question ici: [link] (https://stackoverflow.com/q/46043094/1315288) –

0

La solution à c'était la suivante:

https://unix.stackexchange.com/a/12772

En outre, veiller à ce que XQuartz (client X11) est en cours d'exécution sur l'ordinateur client (macOS dans ce cas).

Je vais confirmer si cela fonctionne avec le Pi (serveur) fonctionnant dans une configuration sans tête.