最重要一点:Ubuntu 上开发gtk+2.0的程序,需要安装相应的头文件和库。
这是网上搜索的,别人安装的软件包:
apt-get install vim #使用vim来编写代码,当然您可以使用任何自己喜欢的编辑器
apt-get install build-essential #这将安装gcc/g++/gdb/make 等基本编程工具
apt-get install gnome-core-devel #这将安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件
apt-get install pkg-config #用于在编译GTK程序时自动找出头文件及库文件位置
apt-get install devhelp #这将安装 devhelp GTK文档查看程序
apt-get install libglib2.0-doc libgtk2.0-doc #这将安装 gtk/glib 的API参考手册及其它帮助文档
apt-get instal glade libglade2-dev #这将安装基于GTK的界面构造程序
这是我自己安装的软件包
只安装这三个,编译下面的程序也成功了,事实说明上面那些软件包不需要装那么多
apt-get install libglib2.0-dev
apt-get install build-essential
apt-get install pkg-config
1 #include<gtk/gtk.h> 2 3 void hello(GtkWidget *widget,gpointer data) 4 { 5 g_print("Hello Ubuntu! "); 6 } 7 gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data) 8 { 9 g_print ("delete event occurred "); 10 return(TRUE); 11 } 12 void destroy(GtkWidget *widget,gpointer data) 13 { 14 gtk_main_quit(); 15 } 16 int main( int argc, char *argv[] ) 17 { 18 GtkWidget *window; 19 GtkWidget *button; 20 gtk_init (&argc, &argv); 21 window=gtk_window_new (GTK_WINDOW_TOPLEVEL); 22 gtk_signal_connect (GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL); 23 gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL); 24 gtk_container_set_border_width (GTK_CONTAINER (window), 10); 25 button = gtk_button_new_with_label ("Hello Ubuntu!"); 26 gtk_signal_connect (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL); 27 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (gtk_widget_destroy),GTK_OBJECT (window)); 28 gtk_container_add (GTK_CONTAINER (window), button); 29 gtk_widget_show (button); 30 gtk_widget_show (window); /*显示一个窗口*/ 31 gtk_main(); /*进入主循环*/ 32 return(0); 33 }
最后编译运行:
$ gcc win.c -o win `pkg-config --cflags --libs gtk+-2.0`
$ . /hello