Gtk-WARNING **: cannot open display:



  • Hallo!

    Ich versuche, ein einfaches Programm mit GTKMM auszuführen. Das Programm compiliert, aber wenn ich es ausführe, bekomme ich folgende Fehlermeldung:

    Gtk-WARNING **: cannot open display:

    Ich arbeite über SSH auf einem remote computer (linux)

    Hier ist der c++ Code:

    #include <gtkmm/main.h>
    #include <gtkmm/window.h>

    int main(int argc, char *argv[])
    {
    Gtk::Main kit(argc, argv);

    Gtk::Window window;

    Gtk::Main::run(window);

    return 0;
    }

    Makefile:

    OBJS = main.o

    CC = g++
    LD = g++
    CC_FLAGS = -c -g -Wall `pkg-config --cflags gtkmm-2.4`
    LD_FLAGS = -o $(EXECUTABLE) `pkg-config --libs gtkmm-2.4`
    EXECUTABLE = mini

    mini: (OBJS)(OBJS) (LD) $(LD_FLAGS) $(OBJS)

    main.o: main.cpp
    $(CC) $(CC_FLAGS) main.cpp

    all: mini

    clean: rm $(OBJS) $(EXECUTABLE)

    beim ausführen mit

    $ ./mini

    bekomme ich

    (mini:27421): Gtk-WARNING **: cannot open display:



  • Das Programm weiß nicht, auf welchem Display es sich anzeigen soll. Solltest du mit der "DISPLAY"-Variable beheben können... siehe hier: http://www.linuxquestions.org/questions/showthread.php?p=2395576#post2395576

    Läuft auf der Kiste eigentlich 'n X11-Server?



  • hallo, danke für die antwort!

    ja, X11 läuft!

    wie genau mache ich das mit der display variable in meinem code?

    vielen dank, bin ein völliger anfänger...



  • Gar nicht im Code, das tippst du in die shell ein.



  • Was genau muss ich in die shell eingeben?

    Ich hab das vom obigen link probiert und es hat nicht geklappt...



  • Okay, tipp zuerst folgendes ein: echo $DISPLAY
    Den Wert brauchst du gleich

    Dann als root folgendes: xauth merge ~benutzername/.Xauthority
    "benutzername" ist durch deinen Usernamen zu ersetzen

    Zum Schluß kommt: export DISPLAY=:0.0

    Wobei :0.0 der Wert ist, den du vom ersten Befehl bekommen hast. Insofern... was auch immer dir echo $DISPLAY liefert, das ist es, was du im letzten Befehl dann auch angeben musst.



  • Danke, ich hab das versucht, jetzt bekomme ich:

    xauth: creating new authority file /home/students/l0325406/.Xauthority
    xauth: (argv):1: merge: unable to open file /home/students/l0325406/.Xauthority



  • Hast du's auch als root gemacht? Wie im Link angegeben brauchst du root-rechte für den Spaß.


Anmelden zum Antworten