GTK Kompilierungsproblem

dadevelopa

Mitglied
Hallo zusammen,
ich versuche ein einfaches gtk Programm zu kompilieren, hier ist der Source Code:

Code:
#include <gtk/gtk.h>

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window;
    
    gtk_init (&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show  (window);
    
    gtk_main ();
    
    return 0;
}

Als Compiler verwende ich den gcc mit folgendem Aufruf:
Code:
gcc simpleWindow.c -I/usr/include/gtk-2.0
ich weiss es werden noch keine libs included, aber ich denke das Problem würde auch mit den libs auftreten.

Das Problem ist nun nämlich, dass der Compiler ca 0,4 mb an Fehleroutput schmeisst ;)
Ich werde hier mal nur die ersten paar Zeilen posten, und hoffe ihr könnt mir bereits so schon helfen.

Code:
In file included from /usr/include/gtk-2.0/gdk/gdkcolor.h:4,
                 from /usr/include/gtk-2.0/gdk/gdk.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:31,
                 from simpleWindow.c:1:
/usr/include/gtk-2.0/gdk/gdktypes.h:32:18: glib.h: No such file or directory
/usr/include/gtk-2.0/gdk/gdktypes.h:33:25: pango/pango.h: No such file or directory
/usr/include/gtk-2.0/gdk/gdktypes.h:34:25: glib-object.h: No such file or directory
/usr/include/gtk-2.0/gdk/gdktypes.h:51:23: gdkconfig.h: No such file or directory
In file included from /usr/include/gtk-2.0/gdk/gdkcolor.h:4,
                 from /usr/include/gtk-2.0/gdk/gdk.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:31,
                 from simpleWindow.c:1:
/usr/include/gtk-2.0/gdk/gdktypes.h:76: error: parse error before "GdkWChar"
/usr/include/gtk-2.0/gdk/gdktypes.h:76: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:89: error: parse error before "GdkNativeWindow"
/usr/include/gtk-2.0/gdk/gdktypes.h:89: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:168: error: parse error before "data"
/usr/include/gtk-2.0/gdk/gdktypes.h:172: error: parse error before "data"
/usr/include/gtk-2.0/gdk/gdktypes.h:176: error: parse error before "gint"
/usr/include/gtk-2.0/gdk/gdktypes.h:176: warning: no semicolon at end of struct or union
/usr/include/gtk-2.0/gdk/gdktypes.h:177: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:182: error: parse error before "gint"
/usr/include/gtk-2.0/gdk/gdktypes.h:182: warning: no semicolon at end of struct or union
/usr/include/gtk-2.0/gdk/gdktypes.h:183: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:184: error: parse error before "width"
/usr/include/gtk-2.0/gdk/gdktypes.h:184: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:185: error: parse error before "height"
/usr/include/gtk-2.0/gdk/gdktypes.h:185: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:190: error: parse error before "gint"
/usr/include/gtk-2.0/gdk/gdktypes.h:190: warning: no semicolon at end of struct or union
/usr/include/gtk-2.0/gdk/gdktypes.h:191: warning: built-in function 'y1' declared as non-function
/usr/include/gtk-2.0/gdk/gdktypes.h:191: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:192: error: parse error before "x2"
/usr/include/gtk-2.0/gdk/gdktypes.h:192: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:193: error: parse error before "y2"
/usr/include/gtk-2.0/gdk/gdktypes.h:193: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:198: error: parse error before "gint"
/usr/include/gtk-2.0/gdk/gdktypes.h:198: warning: no semicolon at end of struct or union
/usr/include/gtk-2.0/gdk/gdktypes.h:199: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdktypes.h:200: error: parse error before "width"
/usr/include/gtk-2.0/gdk/gdktypes.h:200: warning: data definition has no type or storage class
In file included from /usr/include/gtk-2.0/gdk/gdk.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:31,
                 from simpleWindow.c:1:
/usr/include/gtk-2.0/gdk/gdkcolor.h:19: error: parse error before "guint32"
/usr/include/gtk-2.0/gdk/gdkcolor.h:19: warning: no semicolon at end of struct or union
/usr/include/gtk-2.0/gdk/gdkcolor.h:20: warning: data definition has no type or storage class
/usr/include/gtk-2.0/gdk/gdkcolor.h:21: error: parse error before "green"

Was mache ich falsch? Könnt ihr mir bei diesem Problem helfen?
 
Wie es aussieht, findet er verschiedene Header-Dateien nicht. Schau' nach, wo diese Dateien liegen ind füge diese Pfade mit der -I - Option an den Compileraufruf an. Im VisualStudio6 ist das unter Projekteinstellungen\C/C++ Kategorie Präprozessor, Editfeld 'zusätzliche Include-Verzeichnisse', da brauchst du natürlich kene -I - Option.
 
Hi.

gtk-config (et. al) ist schon ein bißchen veraltet. Normalerweise verwenden jetzt alle pkg-config.

Also, wenn das mit gtk-config nicht klappt, versuch mal
Code:
pkg-config --cflags --libs gtk+-2.0

/edit: Der Befehl sollte natürlich genau an die Stelle wo vorher "gtk-config ..." stand.

Gruß
 
Danke erst einmal, ich habe es nun auch ohne pkg-config geschafft. Die Lösung waren wie gesagt die fehlenden include Files.

Nun habe ich aber ein neues Problem.
Beim zusammenlinken der einzelnen Files wird die Funktion "asprintf" nicht gefunden.

Code:
Undefined                       first referenced
 symbol                             in file

asprintf                            /var/tmp//ccsJNl1p.o

Die Funktion wird im letzten File verwendet, welches mit den anderen zusammengeführt wird. Was mich wundert, ist, das asprintf ja eigentlich eine Standartfunktion ist, soweit ich weiss.
Was es noch zu sagen gibt. Ich entwickle unter windows, kompiliere und führe das Programm jedoch unter UNIX und LINUX aus.

Ihr könnt mir sicher auch sofort sagen, was hier das Problem ist. ;)
Danke
 
Also ich kenne keine Funktion asprintf(...). Ich kenne nur printf, sprintf, snprintf und fprintf sowie die zugehörigen Unicode-Varianten. Was soll asprintf denn machen?
 
jokey2 hat gesagt.:
Also ich kenne keine Funktion asprintf(...). Ich kenne nur printf, sprintf, snprintf und fprintf sowie die zugehörigen Unicode-Varianten. Was soll asprintf denn machen?
Code:
man asprintf

Mhm das asprintf ist eine GNU Erweiterung der Standardbilbliothek.
Es kann sein das es auf deiner Plattform vielleicht nicht verfügbar ist?
Verwende doch einfach anstatt asprintf sprintf.

Gruß

RedWing
 
Zurück