由於gtk基本上主要以c語言來撰寫,您必須有c編譯器,ubuntu預設安裝好後就有gcc了,不過缺少必要的header file,您可以在文字模式下,安裝build-essential套件,例如:
sudo apt-get install build-essential
安裝完成後,可以寫個基本的c語言程式:
編譯並執行看看:$ gcc -o hello hello.c
$./hello
hello! world!
哈囉!c語言!
再來安裝gtk開發套件libgtk2.0-dev:
sudo apt-get install libgtk2.0-dev
安裝完成後,可以使用pkg-config檢視一下gtk的相關編譯環境資訊:
pkg-config --cflags --libs gtk+-2.0
pkg-config會讀取gtk附帶的.pc檔來取得相關編譯資訊,--cflags會列出include目錄,--libs列出所鏈結的函式庫及其所在目錄,以我的電腦為例:
$ 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/cairo -i/usr/include/pango-1.0 -i/usr/include/glib-2.0 -i/usr/lib/glib-2.0/include -i/usr/include/freetype2 -i/usr/include/libpng12 -i/usr/include/pixman-1 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
可以分開執行比較清楚,例如:
$ pkg-config --cflags 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/cairo -i/usr/include/pango-1.0 -i/usr/include/glib-2.0 -i/usr/lib/glib-2.0/include -i/usr/include/freetype2 -i/usr/include/libpng12 -i/usr/include/pixman-1
$ pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
所鏈結的函式庫包括了(擷取翻譯自compiling hello world):
不可免俗的,從最簡單的基本視窗產生開始介紹,視窗標題就叫作「哈囉!gtk+!」好了,請使用任一編輯器來編輯乙個hellogtk.c的檔案,內容如下:
這些引數會從引數列中移除,剩下的部份留待您自己的程式邏輯來處理。
gtk雖然使用c來撰寫,但是透過gobject函式庫,可以支援物件導向的物件封裝、繼承觀念,透過巨集還可以支援多型的觀念,乙個gtk物件階層範例如下所示:
gobject
+--ginitiallyunowned
+-- gtkobject
+-- gtkwidget
+-- gtkcontainer
+-- gtkbin
+-- gtkwindow
gtk_window_new()會建立乙個gtkwindow,這是乙個基本的視窗物件,gtkwindow繼承自gtkbin,gtkbin繼承自 gtkcontainer,gtkcontainer可以容納其它widget,所以在gtkwindow中可以置放其它的widget,而它們全都是 gtkwidget的後代。
在函式庫的組織上,gtk+的參考手冊 中,若要查詢與gtkwindow設定的相關函式,也就是gtk_window開頭的函式名稱,則直接查詢 gtkwindow 的說明檔案。
在範例中,您使用gtk_window_new()在記憶體中產生乙個gtkwindow(但還不是真正出現在螢幕畫面中),引數設定為gtkwindowtype,有兩個可用的設定:
若要設定gtkwindow標題文字,則使用gtk_window_set_title(),gtk_window巨集用以將window物件轉型為gtkwindow型態。
gtk_window_new()只是在記憶體中產生乙個gtkwindow,若要真正在螢幕畫面中顯示gtk的widget,則使用 gtk_widget_show(),最後呼叫gtk_main(),這會將程式的控制權交給gtk,由gtk來等待鍵盤、按鈕等事件或是檔案io通知。
您可以使用以下的指令來進行編譯與執行:
$ gcc hellogtk.c -o hellogtk `pkg-config --cflags --libs gtk+-2.0`
$ ./hellogtk
pkg-config會先取得gtk的標頭檔位置與函式庫資訊,然後再供給gcc進行編譯,乙個程式的執行畫面如下所示:
由於gtk_main()會將控制權交給了gtk,直到呼叫gtk_main_quit()之前都不會返回,這個範例目前還沒有實作這個部份(之後還會介紹如何實作),因此這個視窗您按下右上 x 鈕也不會真正關閉,而必須在文字模式下先使用ctrl+c強制中斷程式。
Ubuntu下GTK的安裝
ubuntu下gtk的安裝 apt get install build essential 這將安裝gcc g gdb make 等基本程式設計工具 apt get install gnome core devel 這將安裝 libgtk2.0 dev libglib2.0 dev 等開發相關的庫檔...
Ubuntu下GTK的安裝
apt get install build essential 這將安裝gcc g gdb make 等基本程式設計工具 apt get install gnome core devel 這將安裝 libgtk2.0 dev libglib2.0 dev 等開發相關的庫檔案 apt get inst...
ubuntu下gtk的安裝
gtk的安裝 apt get install build essential 這將安裝gcc g gdb make 等基本程式設計工具 apt get install gnome core devel 這將安裝 libgtk2.0 dev libglib2.0 dev 等開發相關的庫檔案 apt g...