PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compilierung von GTK+-2.0-Beispielprogramm funzt nicht



BLUESCREEN3D
30-06-2003, 12:12
Folgendes Programm:

#include <gtk/gtk.h>

void button_clicked_callback(GtkWidget *button,void *user_data)
{
g_print("Button was clicked!\n");
}

int main(int argc,char **argv)
{
GtkWidget *window;
GtkWidget *button;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
button=gtk_button_new_with_mnemonic("_Hello, World");
g_signal_connect(button,"clicked",G_CALLBACK(button_clicked_callback),NULL);

gtk_container_add(GTK_CONTAINER(window),button);
gtk_widget_show_all(window);
gtk_main();
return(0);
}

soll angeblich mit cc -Wall -g -02 $(pkg-config --cflags --libs gtk+-2.0) gtk.cpp -o gtk compiliert werden - aber ich kriege immer folgende Fehlermeldung:

cc: unrecognized option `-02'
/tmp/ccfA9w5z.o(.eh_frame+0x11): In function `button_clicked_callback(_GtkWidget*, void*)':
/home/user/programming/gtk/gtk.cpp:5: undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

Distri: Red Hat 9.0

Dank der Suchfunktion weiss ich jetzt immerhin, dass undefined reference ein Linker-Fehler ist, aber das hilft mir auch nicht, das Problem zu lösen :confused:

Badsteve
30-06-2003, 12:37
hi,

ich weiß nicht genau, ob es dein Problem löst. Es muss -"O2" heißen nicht "02". Außerdem nennt die Datei mal in *.c um, weil es ein C-Programm ist. es kann sein, dass der Compiler damit falsch ungeht.


Steve

BLUESCREEN3D
30-06-2003, 12:38
mit g++ -Wall `pkg-config --cflags --libs gtk+-2.0` gtk.cpp -o gtk funzt das Compilieren - aber warum nicht, wie z.B. unter http://developer.gnome.org/doc/API/2.0/gtk/gtk-compiling.html angegeben mit cc, sondern nur mit g++??? :confused:

BLUESCREEN3D
30-06-2003, 12:40
Original geschrieben von Badsteve
ich weiß nicht genau, ob es dein Problem löst. Es muss -"O2" heißen nicht "02". Außerdem nennt die Datei mal in *.c um, weil es ein C-Programm ist. es kann sein, dass der Compiler damit falsch ungeht.

dass das ein O und nicht eine 0 ist, hat schonmal die eine Fehlermeldung gelöst, aber es geht trotzdem noch nicht:

[user@localhost ~/programming/gtk]$ cc -Wall -g -O2 $(pkg-config --cflags --libs gtk+-2.0) gtk.cpp -o gtk
/tmp/ccOKEPZV.o(.eh_frame+0x11): In function `main':
/home/user/programming/gtk/gtk.cpp:9: undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

DanDanger
30-06-2003, 18:59
/home/user/programming/gtk/gtk.cpp:9: undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status


Da das ne' Linker-Fehlermeldung ist (ld), schätze ich mal, dass er die lib's nicht findet.
Prüfe doch mal, ob die Ausgabe von : pkg-config --cflags --libs gtk+-2.0 mit deinen Verzeichnissen Übereinstimmt.

BLUESCREEN3D
30-06-2003, 21:41
Original geschrieben von DanDanger
Da das ne' Linker-Fehlermeldung ist (ld), schätze ich mal, dass er die lib's nicht findet.
Prüfe doch mal, ob die Ausgabe von : pkg-config --cflags --libs gtk+-2.0 mit deinen Verzeichnissen Übereinstimmt.

soweit ich das sehe, sieht das alles ganz gut aus:

[user@localhost /tmp/a]$ pkg-config --cflags --libs gtk+-2.0
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/X11R6/include -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -Wl,--export-dynamic -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

[user@localhost /tmp/a]$ for a in `pkg-config --cflags --libs gtk+-2.0`; do b=`echo $a | grep -- -I | cut -b 3-`; echo $b; ls $b; echo; done
/usr/include/gtk-2.0
gdk gdk-pixbuf gdk-pixbuf-xlib gtk

/usr/lib/gtk-2.0/include
gdkconfig.h

/usr/include/atk-1.0
atk

/usr/include/pango-1.0
pango

/usr/X11R6/include
DPS Mrm uil X11 Xaw3d xf86Optrec.h xf86Parser.h Xm

/usr/include/freetype2
freetype

/usr/include/glib-2.0
glib glib.h glib-object.h gmodule.h gobject

/usr/lib/glib-2.0/include
glibconfig.h