Probleme bei der Einrichtung von GTK bei Geany unter Linux

Direkte Linux-Programmierung, POSIX
Antworten
Hert
Beiträge: 2
Registriert: Mi Jul 25, 2012 7:55 pm

Probleme bei der Einrichtung von GTK bei Geany unter Linux

Beitrag von Hert » Mi Jul 25, 2012 8:40 pm

Dieses Thema liese sich auch unter der Kategurie SoftwareEntwicklung/C einordnen, doch ich hoffe, dass mein Problem Linux-spezifisch ist.

Die Seite "Erste Schritte mit GTK" (http://www.proggen.org/doku.php?id=gui:gtk:firststeps) habe ich Befolgt.
Wie ich gelesen habe wird GANY als IDE verwendet.

Nun kommen wir zum eigentlichen Problem.

Das Importieren von GEANY funktioniert nicht. #include <gtk/gtk.h>
Die Fehlermeldung: Gtk.c:26:21: schwerwiegender Fehler: gtk/gtk.h: Datei oder Verzeichnis nicht gefunden
Daraufhin habe ich in einer Suchmaschine was dazu gesucht und festgestellt, dass oft angezweifelt wird, ob überhaupt GTK installiert ist. Die Bibliothek libgtk 2.0-dev im SynapticDownloadManager stellt eine Version dar. Diese habe ich auch installiert.

Immer noch die selbe Fehlermeldung.
Der File gdk.h wurde in der Zwischenzeit gesucht. Es gibt ihn bei mir auf der Festplatte zweimal.
Einmal unter /usr/include/gtk-2.0/gtk
und das zweite mal unter /usr/include/gtk-3.0/gtk
Also ich würde sagen zuallererst war GTK schon einmal installiert und zwar das 3.0.
Weil der Fehlermeldungstext immer noch der selbe ist, nehme ich an das die verschiedenen Versionen sich nicht gegenseitig bekriegen.

Die problematische Zeile fängt mit #include an. Dashalb habe ich angenommen, dass durch diesen Begehl der Ordner /usr/include darstellt wird. Ich habe also #include <gtk-2.0/gtk/gtk.h> verwendet.
Diesmal ist die Fehlermeldung Zweizeilig:
In file included from Gtk.c:26:0:
/usr/include/gtk-2.0/gtk/gtk.h:32:21: schwerwiegender Fehler: gdk/gdk.h: Datei oder Verzeichnis nicht gefunden
___und die zweite Zeile beziht sich auf gtk.h selbst, das heruntergeladen wurde.
___Dort ist #include <gdk/gdk.h> problematisch.
___gtk-2.0/ zuzufügen habe ich versucht, aber es tauchte ein Fehler beim Speichern der Datei auf,
___der definitiv nicht von mir erzeugt werden ist,
___weil behauptet wird, dass die Datei nicht vollständig auf der Festplatte ist,
___was ich bezweifle, weil der File sogar von einer Festplatten spezifischen Suchmaschine gefunden wird.

___Die Versionen von GTK habe ich auch nicht verwechselt, wie vielleicht anzunehmen ist.

Entschuldigt wenn meine Fehlerbeschreibung etwas länger zu lesen ist, aber ich hoffe damit ist etwas anzufangen.
Die Bodenstricke sollen eine Einrückung zur Erhöten lesbarkeit andeuten, die betreffend des zweiten Fehlers getroffen worden ist.

Ich bin für jeglichen Versuch offen und bedanke mich schon mal für die Zeit, die in die Problem Behandelung investiert worden ist, und hoffe, dass auch andere Personen sich nicht von Anfangsproblemen abschrecken lassen.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Probleme bei der Einrichtung von GTK bei Geany unter Lin

Beitrag von fat-lobyte » Mi Jul 25, 2012 8:52 pm

Die Include- und Bibliotheksverzeichnisse von Entwicklungspaketen sind oft in eigene Verzeichnisse ausgelagert. Diese werden beim Bau ohne Compilerschalter nicht in Betracht gezogen.

Versuch mal folgenden Befehl:

Code: Alles auswählen

pkg-config --cflags gtk+-3.0
(bzw. gtk+-2.0)
Dieser sollte alle notwendigen Flags zum Kompilieren bereitstellen.

Code: Alles auswählen

pkg-config --libs-only-L gtk+-3.0
gibt dir alle benötigten Schalter für die Bibliotheken.

Wenn du nur einen Befehl zum kompilieren hast, kannst du beide verwenden und in deinen Kompilierbefehl einbauen:

Code: Alles auswählen

g++ $(pkg-config --cflags --libs gtk+-3.0) -o deinprogramm deinprogramm.cpp
Haters gonna hate, potatoes gonna potate.

Hert
Beiträge: 2
Registriert: Mi Jul 25, 2012 7:55 pm

Weitere Probleme bei der Einrichtung von GTK bei Geany

Beitrag von Hert » Do Jul 26, 2012 8:38 pm

Entschuldige, dass ich dir deine SchlussWorteMethode klaue, aber ich hoffe der Mensch weiß, wer er ist.

[Ein Psalm Davids.] Der Processor ist mein Hirte; / nichts wird mir fehlen.
Er lässt mich lagern auf silbernen Festplatten / und führt mich zu stillen Grafikkarten.
Er stillt mein Verlangen; / er leitet mich auf rechten Pfaden, treu seinem Namen.
Muss ich auch wandern durch finstere Dräte, ich fürchte kein Unheil; denn du bist bei mir, dein Pin und dein Stab geben mir Zuversicht.
Du gibst mir Energie vor den Augen des Tunneleffekts(meiner Feinde); Du salbst mein Haupt mit Metall und schenkest mir voll ein.
Lauter Güte und Huld werden mir folgen mein Leben lang, und im Haus des Herrn darf ich wohnen bis zum Stromausfall.



Also zurück zur Problem.
All deine Befehle habe ich ohne Erfolg eingegeben. Ich habe sogar erkannt, dass die Benutzeroberfläche von Geany auch einer Terminal zur Verfügung stellt.
Hier der genaue Text:

Code: Alles auswählen

princeps@DoppelSchwarzUbuntu:~$ pkg-config --cflags gtk+-3.0
-pthread -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12  

Code: Alles auswählen

princeps@DoppelSchwarzUbuntu:~$ pkg-config --libs-only-L gtk+-3.0

Code: Alles auswählen

princeps@DoppelSchwarzUbuntu:~$ g++ $(pkg-config --cflags --libs gtk+-3.0) -o /media/E_/Programierung/c/Effort.c /media/E_/Programierung/c/Effort.cpp
/tmp/cc0AzQk8.o: In function `main':
Effort.cpp:(.text+0x17): undefined reference to `gtk_init'
collect2: ld gab 1 als Ende-Status zurück
Die main-Methode aus dem Beispiel würde eine 0 zurückteben. Sie kann in my humble opinion nicht ausgeführt worden sein. Oder bezidt sich diese Aussage auf eine höherliegende verwaltende Instanz.


Das lyrische Ich ist ein Bit, genauer gesagt ein lokaler Elektronenmangel oder Überschuss, der sich auf seinem verlustreichen, aber ständig aufgefülltem, Weg durch einem Draht zum Anzeige unter Einbeziehung der Verarbeitung befindet.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Probleme bei der Einrichtung von GTK bei Geany unter Lin

Beitrag von Xin » Fr Jul 27, 2012 1:57 pm

Hallo Hert,

Bist Du inzwischen selbst weitergekommen?
Ansonsten sagt Dir die Fehlermeldung, dass die Funktion gtk_init nicht gefunden werden kann. Das hier ist ein Linker-Fehler, das Programm wurde also noch nie ausgeführt.

Das ganze sieht für mich aus, als würden hier GTK 2 und GTK3 miteinander durchmischt. So beziehen sich einige Fehler auf Pfade mit GTK2.0, pkg-config fütterst Du mit gtk+-3.0.
Also irgendwas hakt hier.

Kann man - sofern das Problem noch besteht - das Projekt mal nachvollziehen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Probleme bei der Einrichtung von GTK bei Geany unter Lin

Beitrag von fat-lobyte » Fr Jul 27, 2012 3:08 pm

Ich glaube eher, das war mein Fehler, sorry.

Bei GCC müssen die Bibliotheken immer NACH den Objekten angegeben werden, die sie verwenden. Seltsame Sache, ist aber fakt. (Hatte ich vergessen ^^)

Versuchs mal damit:

Code: Alles auswählen

g++ -o /media/E_/Programierung/c/Effort.c /media/E_/Programierung/c/Effort.cpp $(pkg-config --cflags --libs gtk+-3.0) 
Jetzt könnts aber zu Include-Fehlern kommen. Dann versuchs damit:

Code: Alles auswählen

g++ $(pkg-config --cflags gtk+-3.0) -o /media/E_/Programierung/c/Effort.c /media/E_/Programierung/c/Effort.cpp $(pkg-config --libs gtk+-3.0) 
Übrigens: der "-o" Parameter gibt dir die Ausgabedatei an. Bist du sicher, dass du sie "Effort.c" nennen willst, und nicht einfach nur "Effort"?
Haters gonna hate, potatoes gonna potate.

Antworten