天天看點

第一個Gtk+視窗程式編譯手記(Linux平台)

本文的編譯環境為Linux RedHat 9.0 + gcc,在編譯以下視窗程式之前,必須确定你的系統已安裝了以下三大元件:

1:開發工具

2:X軟體開發

3:GNOME軟體開發

如果在安裝Linux RedHat 9.0的時候未選擇這三個軟體包進行安裝,則可以單擊紅帽圖示-系統設定-添加/删除應用程式,打開軟體包管理視窗,點選開發工具,X軟體開發,GNOME軟體開發這三項前的複選框進行安裝。

1: 将以下代碼儲存為gtkwin.c檔案,放在root管理者目錄下。

#include <gtk/gtk.h>

/*按鈕單擊回調函數*/

void Button_Click(GtkWidget * widget,gpointer * data)

{

/*在指令行上列印一行消息*/

g_print("button clicked and data = %s/n",(char *)data);

}

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);

/*設定視窗關閉銷毀時的回調函數*/

g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(Destroy),NULL);

/*設定視窗标題*/

gtk_window_set_title(GTK_WINDOW(window),"My First GTK+ Window");

/*設定視窗邊框寬度*/

gtk_container_border_width(GTK_CONTAINER(window),20);

/*建立按鈕*/

button = gtk_button_new_with_label("Hello World");

/*設定按鈕單擊時的回調函數*/

g_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(Button_Click),"Hello World!");

/*将按鈕添加到視窗中*/

gtk_container_add(GTK_CONTAINER(window),button);

/*顯示按鈕和視窗*/

gtk_widget_show(button);

gtk_widget_show(window);

/*進入消息循環*/

gtk_main();

return 0;

}

2:單擊紅帽圖示-系統工具-終端,打開指令行視窗。輸入以下指令。其中[[email protected] root]#為指令行提示符,不需要手工輸入。該提示符表示的是[目前使用者名@目前機器名 目前所在目錄]。注意,如果源檔案不在root目錄,則應先進入到該目錄下。

[[email protected] root]# gcc -o gtkwin gtkwin.c `pkg-config --libs --cflags gtk+-2.0`

[[email protected] root]# ./gtkwin

-o gtkwin選項表示編譯生成的程式檔案名為gtkwin,如果不指定該選項,則gcc編譯器預設為a.out。gtkwin.c指定要編譯的源檔案名,`pkg-config --libs --cflags gtk+-2.0`要注意的是前後的兩個"`"字元為鍵盤上數字鍵1旁邊的那個鍵的輸入,而不是";"鍵旁邊的那個單引号鍵的輸入。

./gtkwin運作編譯生成後的目前目錄下的gtkwin程式。

OK,到這裡一個Gtk+視窗程式就可以編譯成功了。

另一種編譯方法可以使用Makefile,輸入以下代碼儲存為Makefile檔案,同樣放到root管理者目錄下。

CC=gcc

program=gtkwin

#PATH += /usr/include/gtk2.0

LDLIBS=`pkg-config --libs gtk+-2.0`

CFLAGS= -Wall -g `pkg-config --cflags gtk+-2.0`

$(program):$(program).o

$(CC) $(LDLIBS) $(program).o -o $(program)

$(program).o:$(program).c

$(CC) $(CFLAGS) -c $(program).c

clran:

-rm -f $(program)

-rm -f *.o

再在終端裡輸入:

[[email protected] root]# make

[[email protected] root]# ./gtkwin

同樣可以成功編譯,并且友善得多。

繼續閱讀