LINUX.ORG.RU

ошибка компиляции простого файла


0

0

Здравствуйте. Пытаюсь откомпилировать тестовый пример для gdk-1.2. Не хочет компилится, выдает ошибки. Система после установки не настраивалась. RedHat 7.2.

2.c: #include <gtk/gtk.h> void hello( GtkWidget *widget, gpointer data ) { g_print ("Hello World\n"); }

gint delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { g_print ("delete event occurred\n"); return(TRUE); }

void destroy( GtkWidget *widget, gpointer data ) { gtk_main_quit(); }

int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init(&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (delete_event), NULL); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (destroy), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); button = gtk_button_new_with_label ("Hello World"); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (hello), NULL); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (window)); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show (button); gtk_widget_show (window); gtk_main (); return(0); } /* example-end */

команда компиллирования: gcc -Wall -g helloworld.c -o helloworld `gtk-config --cflags` \ `gtk-config --libs`

Выдает ошибки: In function 'main': warning: implicit declaration of function 'g_signal_connect' warning: implicit declaration of function 'G_OBJECT' warning: implicit declaration of function 'G_CALLBACK' warning: implicit declaration of function 'g_signal_connect_swapped' /tmp/ccE5.o In function 'main' undefinded reference to 'G_CALLBACK' undefinded reference to 'G_OBJECT' undefinded reference to 'g_signal_connect' ...

Пример с http://www.gtk.org/tutorial1.2/gtk_tut-2.html

В программировании под линух - новичек. По сути дела никогда с графикой не связывался на линуксе.

Подскажите пожалуйста, в чем косяк.


Зачем вам RedHat 7.2? Некрофилия? И какая у вас там версия gtk? Выполните команду "rpm -q -a | grep gtk".

P.S. При постинге на этот форму текстов программ нужно выбирать режим "Preformated text" и использовать кнопочку "Предпросмотр".

mky ★★★★★
()
Ответ на: комментарий от Deleted

Как это ни странно, но такая же ерунда была у меня и в ubuntu, причем явно довольно свежий дистриб.

Библиотеки GTK+2.0 не подключаются к компилятору, поэтому я решил попробовать на старой 1.2 версии gtk.

aurion
() автор топика

j4ck@adsl ~/test $ cat gtk.c
#include <gtk/gtk.h>

void hello( GtkWidget *widget, gpointer data ) {

g_print ("Hello World\n");
}

gint delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) {

g_print ("delete event occurred\n");
return(TRUE);
}

void destroy( GtkWidget *widget, gpointer data ) {

gtk_main_quit();
}

int main( int argc, char *argv[] ) {
GtkWidget *window;
GtkWidget *button;
gtk_init(&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (delete_event), NULL);
gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (destroy), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label ("Hello World");
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (hello), NULL);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (window));
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window);
gtk_main ();
return(0);
}
/* example-end */
j4ck@adsl ~/test $ gcc -Wall -g gtk.c -o helloworld `gtk-config --cflags` `gtk-config --libs`
j4ck@adsl ~/test $ ./helloworld
Hello World

работает норм на gentoo и окошко показывает, скорее всего хедеры GTK кривые у тебя в системе

x97Rang ★★★
()
Ответ на: комментарий от aurion

в убунте

$ sudo apt-get install libgtk2.0-dev gcc

плюсом он тебе предложит еще пачку *dev пакетов, можешь еще что-либо доставить.

>Библиотеки GTK+2.0 не подключаются к компилятору, поэтому я решил попробовать на старой 1.2 версии gtk.


с таким подходом можешь до DOS'а дойти :)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.