Windows 下第乙個 GTK 程式

2021-08-22 17:46:33 字數 2051 閱讀 4933

在 這邊說明一下如何在windows作業系統之下撰寫、編譯gtk,gtk使用glib、cairo、pango、atk、gtk+、gettext- runtime、libpng、libjpeg、libtiff與zlib,所以您必須也取得這些套件,在gtk官方網站的 windows download 中可以取得,最簡單的方法是取得all-in-one bundle。

以下說明安裝的步驟:

在 下載 minggw

在gtk官網中取得

all-in-one bundle

安裝 mingw,選擇安裝base tools、g++ 及 make

解開all-in-one bundle

在環境變數path中加入mingw的bin路徑與解開後的gtk之bin路徑

這樣就完成windows下撰寫gtk所需的安裝了,您可以執行以下的指令取得include目錄資訊並儲存至inc.txt:

$ pkg-config --cflags --libs gtk+-2.0 > inc.txt

執行以下的指令取得lib目錄資訊並儲存至lib.txt:

$ pkg-config --libs --libs gtk+-2.0 > lib.txt

為了方便起見,可撰寫乙個簡單的makefile如下,並將方才的inc.txt與lib.txt之內容分別設定給cflags與libs:

cc = gcc

cflags = -mms-bitfields -ic:/winware/gtk/include/gtk-2.0

-ic:/winware/gtk/lib/gtk-2.0/include -ic:/winware/gtk/include/atk-1.0

-ic:/winware/gtk/include/cairo -ic:/winware/gtk/include/pango-1.0

-ic:/winware/gtk/include/glib-2.0 -ic:/winware/gtk/lib/glib-2.0/include

-ic:/winware/gtk/include/libpng12

libs = -lc:/winware/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0

-lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo

-lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl

main:

$(cc) foo.c -o foo.exe $(cflags) $(libs)

然後您可以撰寫乙個簡單的gtk程式:

#include 

int main(int argc, char *argv)

為了可以顯示中文,您的檔案必須以utf-8存檔(檔首無bom),接著執行make指令:

$ make

gcc foo.c -o foo.exe -mms-bitfields -ic:/winware/gtk/include/gtk-2.0 -ic:/winwar

e/gtk/lib/gtk-2.0/include -ic:/winware/gtk/include/atk-1.0 -ic:/winware/gtk/incl

ude/cairo -ic:/winware/gtk/include/pango-1.0 -ic:/winware/gtk/include/glib-2.0 -

ic:/winware/gtk/lib/glib-2.0/include -ic:/winware/gtk/include/libpng12 -lc:/winw

are/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowi

n32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0

-lglib-2.0 -lintl

程式將產生foo.exe,執行後的結果如下所示:

Windows 下第乙個 GTK 程式

在 這邊說明一下如何在windows作業系統之下撰寫 編譯gtk,gtk使用glib cairo pango atk gtk gettext runtime libpng libjpeg libtiff與zlib,所以您必須也取得這些套件,在gtk官方網站的 windows download 中可以...

Linux 下第乙個shell指令碼

shell指令碼可以高效的完成一件事情,和批處理乙個意思。學習寫第乙個shell指令碼。今天開始寫乙個判斷能否ping通ip的指令碼 1.首先我們看看ping通與不同之間的區別 可以ping通的情況,如下圖所示 不可以ping通的情況,如下圖所示 通和不通區別的地方有很多,隨便找乙個不同點就可以判斷...

Delphi 第乙個hello world程式

這裡delphi做乙個簡單介紹,因為現在移動網際網路時代的崛起,桌面應用程式沒有以前那麼流行,不知道關注delphi的人還多不。用delphi開發桌面應用程式是很快的,第一聽說delphi這種語言是在一本黑客 裡面,然後就關注了一下delphi,發現delphi 挺強大的,大名鼎鼎的熊貓燒香病毒 就...