(一)從源碼編譯安裝GTK開發環境
爲了便於獲取源碼,截止2015-05-26的gtk相關源碼的存放於網盤中:
鏈接: http://pan.baidu.com/s/1gdITvWJ 密碼: w2yd
1. 相關網址
2)Compiling the GTK+ libraries
Overview of GTK+ and its Libraries
2.下載和編譯源碼包
1)下載源碼: (版本:gtk+-3.16.3.tar.xz)
2)解壓配置gtk源碼
$ tar xvfJ gtk+-3.16.3.tar.xz $ cd gtk+-3.16.3/ $ ./configure --prefix=/opt/gtk
編譯GTK需要依賴 glib、atk、pango、cairo、gdk-pixbuf等軟件包。
3)編譯配置glib及其依賴包zlib、libffi
a.編譯安裝libffi-3.2.1(http://www.sourceware.org/libffi/)
採用默認configure
b.編譯安裝zlib-1.2.8(http://www.zlib.net/)
採用默認configure
c. 編譯安裝glib-2.44.1
$ ./configure --prefix=/opt/glib-2.44.1 $make $sudo make install
由於未採取默認配置,設置了自定義安裝目錄,因此需要聲明變量PKG_CONFIG_PATH和LD_LIBRARY_PATH。
以glib爲例,.pc文件位於 package/lib/pkgconfig目錄下,則添加文件set_pkg_config_path_glib-2.0聲明PKG_CONFIG_PATH變量和LD_LIBRAY_PATH
$cat /opt/glib-2.44.1/set_pkg_config_path_glib-2.0 export PKG_CONFIG_PATH=/opt/glib-2.44.1/lib/pkgconfig:$PKG_CONFIG_PATH export LD_LIBRARY_PATH=/opt/glib-2.44.1/lib:$LD_LIBRAY_PATH
對其它的五個package(atk、cairo、pango、cairo-gobject、gdk-pixbuf-2.0)依次採用針對glib-2.0的編譯安裝和配置方法,解決GTK對多個庫依賴問題。
d.編譯安裝gobject
配置gobject,Error:未發現Python頭文件( configure: error: Python headers not found)
Solution:
$sudo apt-get install python-dev //沒有安裝python源代碼,報找不到 Python.h的頭文件錯誤
e.下載編譯gdk-pixbuf(http://www.linuxfromscratch.org/blfs/view/svn/x/.html)
gdk-pixbuf依賴glib、libjpeg-turbo、libpng、libtiff,這幾個包需要先編譯安裝。
Gdk Pixbuf Dependencies
RequiredGLib-2.44.1, libjpeg-turbo-1.4.0, libpng-1.6.17 and LibTIFF-.0.3
Recommended
Xorg Libraries (Many GTK+ applications require gdk-pixbuf-xlib).
Optional (Required if building GNOME)
gobject-introspection-1.44.0
Optional: JasPer-1.900.1 and GTK-Doc-1.22
eg.如果爲安裝libxi則配置時出現如下錯誤:
Solution:
$ sudo apt-get install libxi-dev
f.下載編譯cairo源碼(http://cairographics.org/)
configure信息:
g.編譯安裝pango
pango依賴cairo、glib、freetype,所以這些包需要先編譯安裝,或者使用
$sudo apt-get install gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev
$ ./configure --prefix=/opt/pango
configure: error: *** Could not enable any backends.
*** Must have at least one backend to build Pango.
過程中可能還會依賴bzip2,需要補充編譯安裝。
編譯freetype出錯:
一般是64位系統出現此問題,Makefile中CFLAGS加參數-fPIC,使用64位元的方法進行編譯。
h. 編譯安裝atk
參考資料
a) GTK+安裝筆記
b)CentOS編譯安裝GIMP
c)checking which cairo font backends could be used... none
d)libbz2.a,libz.so導致tokyocabinet make失敗問題解決方法
$sudo make $sudo make install
安裝成功:
Error
Couldn't find include 'GdkPixbuf-2.0.gir' (search path: ['../gdk', '/usr/share/gnome/gir-1.0', '/usr/local/share/gir-1.0', '/usr/share/gir-1.0', '/usr/local/share/gir-1.0', '/usr/share/gir-1.0', '/usr/local/share/gir-1.0'])
Solution:
configure時添加參數 --enable-introspection=no(默認爲yes)
測試是否安裝成功--運行demo程序:
~/src/gtk+-3.16.3/demos/gtk-demo$ ./gtk3-demo
參考鏈接:
There are the depandency problem
and the library I install to solve the problem:
glib-2.40.0
problem
configure: error: * Working zlib library and headers not found *
solve:
sudo apt-get install ruby
sudo apt-get install zlib1g-dev
problem
configure: error: Package requirements (libffi >= 3.0.0) were not met:
solve
sudo apt-get install libffi-dev
gdk-pixbuf-2.30.8
problem
configure: WARNING: *** TIFF loader will not be built (TIFF library not found)`
solve
sudo apt-get install libtiff4-dev
problem
configure: WARNING: * PNG loader will not be built (PNG library not found)*
configure: WARNING: * PNG loader will not be built (PNG header file not found) * ````
solve
sudo apt-get install libpng-dev
gobject-introspection-1.40.0
problem
configure: error: flex not found but required
solve
sudo apt-get install flex
problem
configure: error: bison not found but required
solve
sudo apt-get install bison
problem
configure: error: Python headers not found
solve
sudo apt-get install python-dev
pango-1.36.5
problem
configure: error: *** Could not enable any backends.
solve
sudo apt-get install libcairo-dev
sudo apt-get install libcairomm-1.0-dev
What's more, I also install
HarfBuzz
. I download the source filehttp://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.22.tar.bz2
and compile it.
gtk+-3.12.2
problem
configure: error: *** XInput2 extension not found. Check 'config.log' for more details.
solve
sudo apt-get install libXi-dev
problem
configure: error: Package requirements (atk atk-bridge-2.0) were not met:
No package 'atk-bridge-2.0' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix.
Alternatively, you may set the environment variables ATK_CFLAGS and ATK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
solve
sudo apt-get install libatk-bridge2.0-dev
problem
Couldn't find include 'GdkPixbuf-2.0.gir' (search path: ['../gdk', '/usr/share/gnome/gir-1.0', '/usr/local/share/gir-1.0', '/usr/share/gir-1.0', '/usr/local/share/gir-1.0', '/usr/share/gir-1.0', '/usr/local/share/gir-1.0']) make[4]: * [Gdk-3.0.gir] Error 1 make[4]: Leaving directory
/home/simowce/GTK/gtk+-3.12.2/gdk' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory
/home/simowce/GTK/gtk+-3.12.2/gdk' make[2]: * [all] Error 2 make[2]: Leaving directory/home/simowce/GTK/gtk+-3.12.2/gdk' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory
/home/simowce/GTK/gtk+-3.12.2' make: *** [all] Error 2`solve
sudo apt-get install gobject-introspection
What' s more, I also install
gdk-pixbuf
from the source file from HERE.problem
Couldn't find include 'Atk-1.0.gir'
solve
To solve this problem, I download
ATK-2.14.0
fromhttp://ftp.gnome.org/pub/gnome/sources/atk/2.14/atk-2.14.0.tar.xz
.Then, I build it by using the listed command:
./configure --prefix=/usr make sudo amek install
2. BLFS Book - Version 2012-04-04 Enhancement gtk+-3.2.4
About the error of couldn't find include 'gdkpixbuf-2.0.gir'. One solution is add --enable-introspection=no while configuring. The other one is install Gobject Introspection before atk, pango alnd gdk-pixbuf.
On the Gtk+-3 page it already says that if you want introspection support you need to install Gobject Introspection before you install Atk, Pango and Gdk-Pixbuf. If you don't need introspection support and you're getting an error because of Gobject-Introspection the obvious solution is to configure with --disable-introspection.
PS:如果提示缺少某個Package,一個簡單的方法時使用命令 apt-catch search PackageName,然後apt-get install 相應package的dev支持庫。
關於pkg-config
1. /etc/ld.so.conf : 文件記錄了編譯時使用的動態鏈接庫的路徑
如果不修改/etc/ld.so.conf使用非默認路徑下的庫文件-----LD_LIBRARY_PATH
環境變量LD_LIBRARY_PATH列出了查找共享庫時除了默認路徑之外的其他路徑。如果不想修改或無法修改(無root權限)/etc/ld.so.conf而使用其他路徑下的庫文件就需要設置LD_LIBRARY_PATH了,例:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/lib 這樣就可以使用/opt/lib下的庫文件。
2. ldconfig - configure dynamic linker run-time bindings
root命令,其作用是將/etc/ld.so.conf列出的路徑下的庫文件緩存到/etc/ld.so.cache以供使用。因此當安裝完一些庫文件(例如剛安裝好glib),或者修改ld.so.conf增加新的庫路徑後,需要運行一下/sbin/ldconfig,使所有的庫文件都被緩存到ld.so.cache中,否則即使庫文件就在/usr/lib下,也會不被使用,結果是編譯過程中報錯,缺少xxx庫。
3.PKG_CONFIG_PATH & LD_LIBRARY_PATH
pkg-config是向configure程序提供系統信息的程序,比如軟件的版本,庫的版本、路徑等等,並且這些信息只在編譯時使用。pkg-config要求庫提供一個.pc元數據文件,從這些文件中檢索庫的各種必要信息,包括版本信息,編譯和連接需要的參數等。這些信息可以通過pkg-config提供的參數(如--cflags, --libs)單獨提取出來直接供編譯器和連接器使用。默認情況下,每個支持pkg-config的庫對應的.pc文件,在安裝後,都位於目錄/usr/lib/pkgconfig目錄下。環境變量PKG_CONFIG_PATH是用來設置.pc文件的搜索路徑。
/usr/lib/pkgconfig
4. 參考文檔:
1). pkg-config使用
2).PKG_CONFIG_PATH變量 與 ld.so.conf 文件
(二)通過apt-get自動安裝GTK開發軟件包及其相關依賴包
$ sudo apt-get install build-essential $ sudo apt-get install gnome-core-devel
參考鏈接:
運行命令 apt-get install gnome-core-devel 之後顯示的依賴包信息:
The following extra packages will be installed: autoconf automake autopoint autotools-dev debhelper devhelp devhelp-common dh-apparmor docbook docbook-dsssl docbook-to-man docbook-xml docbook-xsl doxygen evince evolution-data-server evolution-data-server-common evolution-data-server-dev evolution-data-server-online-accounts gir1.2-brasero-3.0 gir1.2-caribou-1.0 gir1.2-champlain-0.12 gir1.2-clutter-1.0 gir1.2-clutter-gst-1.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0 gir1.2-ebook-1.2 gir1.2-ebookcontacts-1.2 gir1.2-edataserver-1.2 gir1.2-evince-3.0 gir1.2-farstream-0.2 gir1.2-folks-0.6 gir1.2-freedesktop gir1.2-gck-1 gir1.2-gconf-2.0 gir1.2-gcr-3 gir1.2-gdesktopenums-3.0 gir1.2-gee-0.8 gir1.2-geocodeglib-1.0 gir1.2-gkbd-3.0 gir1.2-glib-2.0 gir1.2-gnomebluetooth-1.0 gir1.2-gnomedesktop-3.0 gir1.2-gst-plugins-base-0.10 gir1.2-gstreamer-0.10 gir1.2-gtk-2.0 gir1.2-gtk-3.0 gir1.2-gtkchamplain-0.12 gir1.2-gtkclutter-1.0 gir1.2-gtop-2.0 gir1.2-gucharmap-2.90 gir1.2-gweather-3.0 gir1.2-gxps-0.1 gir1.2-javascriptcoregtk-3.0 gir1.2-json-1.0 gir1.2-mutter-3.0 gir1.2-nautilus-3.0 gir1.2-networkmanager-1.0 gir1.2-nmgtk-1.0 gir1.2-panelapplet-4.0 gir1.2-pango-1.0 gir1.2-rest-0.7 gir1.2-rsvg-2.0 gir1.2-telepathyglib-0.12 gir1.2-webkit-3.0 gir1.2-wnck-3.0 gir1.2-xkl-1.0 gjs gnome-api-docs gnome-bluetooth gnome-common gnome-desktop3-data gnome-devel-docs gnome-js-common gnome-platform-devel gobject-introspection graphviz gsettings-desktop-schemas-dev gstreamer1.0-doc gtk-doc-tools intltool itstool jade libarchive-dev libarchive13 libatk-bridge2.0-dev libatk1.0-dev libatk1.0-doc libatkmm-1.6-dev libatspi2.0-dev libbrasero-media3-dev libcairo-gobject2 libcairo-script-interpreter2 libcairo2 libcairo2-dev libcairo2-doc libcairomm-1.0-dev libcamel-1.2-45 libcamel1.2-dev libcanberra-doc libcaribou-common libcaribou-dev libcaribou0 libcdt5 libcgraph6 libchamplain-0.12-0 libchamplain-0.12-dev libchamplain-gtk-0.12-0 libchamplain-gtk-0.12-dev libclutter-1.0-dev libclutter-1.0-doc libclutter-gst-1.0-0 libclutter-gst-dev libclutter-gtk-1.0-0 libclutter-gtk-1.0-dev libclutter-gtk-1.0-doc libcogl-dev libcogl-doc libcogl-pango-dev libcroco3-dev libdbus-1-3 libdbus-1-dev libdbus-glib-1-dev libdconf-dev libdconf-doc libdevhelp-3-2 libdrm-dev libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libebackend-1.2-7 libebackend1.2-dev libebook-1.2-14 libebook-contacts-1.2-0 libebook-contacts1.2-dev libebook1.2-dev libecal-1.2-16 libecal1.2-dev libedata-book-1.2-20 libedata-book1.2-dev libedata-cal-1.2-23 libedata-cal1.2-dev libedataserver-1.2-18 libedataserver1.2-dev libegl1-mesa libegl1-mesa-dev libegl1-mesa-drivers libencode-locale-perl libevdocument3-4 libevince-dev libevview3-3 libexpat1-dev libfarstream-0.2-dev libffi-dev libfile-listing-perl libfolks-dev libfont-afm-perl libfontconfig1-dev libfreetype6 libfreetype6-dev libgail-3-0 libgail-3-dev libgail-3-doc libgail-common libgail-dev libgail-doc libgail18 libgbm-dev libgbm1 libgck-1-dev libgconf2-dev libgconf2-doc libgcr-3-dev libgdk-pixbuf2.0-dev libgdk-pixbuf2.0-doc libgee-0.8-dev libgeocode-glib-dev libgeocode-glib0 libgirepository-1.0-1 libgirepository1.0-dev libgjs-dev libgjs0e libgl1-mesa-dev libgl1-mesa-glx libglapi-mesa libgles2-mesa libgles2-mesa-dev libglib2.0-0 libglib2.0-bin libglib2.0-dev libglib2.0-doc libglibmm-2.4-dev libgmime-2.6-dev libgnome-bluetooth-dev libgnome-bluetooth11 libgnome-desktop-3-7 libgnome-desktop-3-dev libgnome-keyring-dev libgnome-menu-3-dev libgnomekbd-dev libgstreamer-plugins-base0.10-dev libgstreamer-plugins-base1.0-dev libgstreamer0.10-dev libgstreamer1.0-dev libgtk-3-0 libgtk-3-dev libgtk-3-doc libgtk2.0-0 libgtk2.0-bin libgtk2.0-dev libgtk2.0-doc libgtkmm-3.0-dev libgtksourceview-3.0-dev libgtksourceview-3.0-doc libgtop2-dev libgucharmap-2-90-dev libgvc6 libgvpr2 libgweather-3-6 libgweather-3-dev libgxps-dev libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libharfbuzz0b libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libical-dev libice-dev libio-html-perl libjavascriptcoregtk-3.0-0 libjavascriptcoregtk-3.0-dev libjson-glib-dev libltdl-dev liblwp-mediatypes-perl liblwp-protocol-https-perl libmail-sendmail-perl libmirclient-dev libmirclient7 libmirclientplatform-mesa libmirprotobuf-dev libmirprotobuf0 libmozjs-24-0 libmozjs-24-bin libmozjs-24-dev libmutter-dev libmutter0c libnautilus-extension-dev libnautilus-extension1a libnet-http-perl libnm-glib-dev libnm-glib4 libnm-gtk-common libnm-gtk-dev libnm-gtk0 libnm-util-dev libnm-util2 libnotify-dev libnotify-doc libnspr4 libnspr4-dev libnss3 libnss3-1d libnss3-dev libnss3-nssdb libp11-kit-dev libpanel-applet-4-0 libpanel-applet-4-dev libpanel-applet-4-doc libpango-1.0-0 libpango1.0-0 libpango1.0-dev libpango1.0-doc libpangocairo-1.0-0 libpangoft2-1.0-0 libpangomm-1.4-dev libpangoxft-1.0-0 libpathplan4 libpcre3-dev libpcrecpp0 libpeas-dev libpixman-1-dev libpng12-dev libprotobuf-dev libprotobuf-lite8 libpthread-stubs0-dev libpython-dev libpython2.7-dev librest-dev librsvg2-dev libsecret-1-dev libseed-gtk3-0 libseed-gtk3-dev libsigc++-2.0-dev libsigsegv2 libsm-dev libsoup-gnome2.4-dev libsoup2.4-dev libsp1c2 libsqlite3-dev libstartup-notification0-dev libsys-hostname-long-perl libtasn1-3-bin libtasn1-3-dev libtasn1-6 libtasn1-6-dev libtasn1-bin libtelepathy-farstream-dev libtelepathy-glib-dev libtelepathy-glib-doc libtool libtotem-plparser-dev libudev-dev libudev1 libudisks2-dev libvala-0.22-0 libvte-2.90-dev libvte-2.90-doc libwacom-dev libwayland-dev libwayland-egl1-mesa libwebkitgtk-3.0-0 libwebkitgtk-3.0-common libwebkitgtk-3.0-dev libwebkitgtk-common-dev libwnck-3-0 libwnck-3-dev libwww-perl libwww-robotrules-perl libx11-dev libx11-doc libx11-xcb-dev libxau-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxext6 libxfixes-dev libxfixes3 libxft-dev libxi-dev libxi6 libxinerama-dev libxkbcommon-dev libxkbfile-dev libxklavier-dev libxml-parser-perl libxml2 libxml2-dev libxml2-doc libxml2-utils libxrandr-dev libxrender-dev libxrender1 libxres-dev libxshmfence-dev libxtst-dev libxxf86vm-dev m4 mesa-common-dev mircommon-dev mm-common mutter-common network-manager-dev network-manager-gnome po-debconf policykit-1-doc python-dev python-gi python-gi-cairo python-gi-dev python-gobject-2-dev python-gobject-dev python-mako python-markupsafe python2.7-dev python3-gi python3-gi-cairo sgml-data sp udev valac valac-0.22 valac-0.22-vapi x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-dri2-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-record-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xorg-sgml-doctools xsltproc xtrans-dev yelp-tools zlib1g-dev Suggested packages: autoconf2.13 autoconf-archive gnu-standards autoconf-doc dh-make apparmor-easyprof docbook-defguide psgml jadetex docbook-dsssl-doc dbtoepub docbook-xsl-doc-html docbook-xsl-doc-pdf docbook-xsl-doc-text docbook-xsl-doc docbook-xsl-saxon fop libsaxon-java libxalan2-java libxslthl-java xalan doxygen-latex doxygen-doc doxygen-gui unrar evolution evolution-data-server-dbg python-doc graphviz-doc lrzip libatkmm-1.6-doc libcairomm-1.0-doc libchamplain-doc libclutter-gst-doc libgck-1-doc libgcr-3-doc libgeocode-glib-doc libgirepository1.0-doc libglibmm-2.4-doc gstreamer0.10-doc libgtkmm-3.0-doc libdata-dump-perl libice-doc libjson-glib-doc libtool-doc libcrypt-ssleay-perl ttf-baekmuk ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp ttf-arphic-gkai00mp ttf-arphic-bkai00mp imagemagick libpeas-doc librsvg2-doc seed-doc libsigc++-2.0-doc libsm-doc libsoup2.4-doc sqlite3-doc automaken gfortran fortran95-compiler gcj-jdk libauthen-ntlm-perl libxcb-doc libxext-doc network-manager-openconnect-gnome network-manager-open***-gnome network-manager-***c-gnome libmail-box-perl python-beaker python-mako-doc perlsgml w3-recs opensp The following NEW packages will be installed: autoconf automake autopoint autotools-dev debhelper devhelp devhelp-common dh-apparmor docbook docbook-dsssl docbook-to-man docbook-xml docbook-xsl doxygen evolution-data-server-dev gir1.2-brasero-3.0 gir1.2-caribou-1.0 gir1.2-champlain-0.12 gir1.2-clutter-1.0 gir1.2-clutter-gst-1.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0 gir1.2-evince-3.0 gir1.2-farstream-0.2 gir1.2-folks-0.6 gir1.2-gck-1 gir1.2-gconf-2.0 gir1.2-gcr-3 gir1.2-gdesktopenums-3.0 gir1.2-gee-0.8 gir1.2-geocodeglib-1.0 gir1.2-gkbd-3.0 gir1.2-gnomedesktop-3.0 gir1.2-gst-plugins-base-0.10 gir1.2-gstreamer-0.10 gir1.2-gtk-2.0 gir1.2-gtkchamplain-0.12 gir1.2-gtkclutter-1.0 gir1.2-gtop-2.0 gir1.2-gucharmap-2.90 gir1.2-gweather-3.0 gir1.2-gxps-0.1 gir1.2-json-1.0 gir1.2-mutter-3.0 gir1.2-nautilus-3.0 gir1.2-nmgtk-1.0 gir1.2-panelapplet-4.0 gir1.2-rest-0.7 gir1.2-rsvg-2.0 gir1.2-telepathyglib-0.12 gir1.2-xkl-1.0 gjs gnome-api-docs gnome-common gnome-core-devel gnome-devel-docs gnome-js-common gnome-platform-devel gobject-introspection graphviz gsettings-desktop-schemas-dev gstreamer1.0-doc gtk-doc-tools intltool itstool jade libarchive-dev libatk-bridge2.0-dev libatk1.0-dev libatk1.0-doc libatkmm-1.6-dev libatspi2.0-dev libbrasero-media3-dev libcairo-script-interpreter2 libcairo2-dev libcairo2-doc libcairomm-1.0-dev libcamel1.2-dev libcanberra-doc libcaribou-common libcaribou-dev libcaribou0 libcdt5 libcgraph6 libchamplain-0.12-0 libchamplain-0.12-dev libchamplain-gtk-0.12-0 libchamplain-gtk-0.12-dev libclutter-1.0-dev libclutter-1.0-doc libclutter-gst-1.0-0 libclutter-gst-dev libclutter-gtk-1.0-dev libclutter-gtk-1.0-doc libcogl-dev libcogl-doc libcogl-pango-dev libcroco3-dev libdbus-1-dev libdbus-glib-1-dev libdconf-dev libdconf-doc libdevhelp-3-2 libdrm-dev libebackend1.2-dev libebook-contacts1.2-dev libebook1.2-dev libecal1.2-dev libedata-book1.2-dev libedata-cal1.2-dev libedataserver1.2-dev libegl1-mesa-dev libencode-locale-perl libevince-dev libexpat1-dev libfarstream-0.2-dev libffi-dev libfile-listing-perl libfolks-dev libfont-afm-perl libfontconfig1-dev libfreetype6-dev libgail-3-dev libgail-3-doc libgail-dev libgail-doc libgbm-dev libgck-1-dev libgconf2-dev libgconf2-doc libgcr-3-dev libgdk-pixbuf2.0-dev libgdk-pixbuf2.0-doc libgee-0.8-dev libgeocode-glib-dev libgeocode-glib0 libgirepository1.0-dev libgjs-dev libgjs0e libgl1-mesa-dev libgles2-mesa-dev libglib2.0-dev libglib2.0-doc libglibmm-2.4-dev libgmime-2.6-dev libgnome-bluetooth-dev libgnome-desktop-3-dev libgnome-keyring-dev libgnome-menu-3-dev libgnomekbd-dev libgstreamer-plugins-base0.10-dev libgstreamer-plugins-base1.0-dev libgstreamer0.10-dev libgstreamer1.0-dev libgtk-3-dev libgtk-3-doc libgtk2.0-dev libgtk2.0-doc libgtkmm-3.0-dev libgtksourceview-3.0-dev libgtksourceview-3.0-doc libgtop2-dev libgucharmap-2-90-dev libgvc6 libgvpr2 libgweather-3-dev libgxps-dev libharfbuzz-dev libharfbuzz-gobject0 libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libical-dev libice-dev libio-html-perl libjavascriptcoregtk-3.0-dev libjson-glib-dev libltdl-dev liblwp-mediatypes-perl liblwp-protocol-https-perl libmail-sendmail-perl libmirclient-dev libmirclient7 libmirclientplatform-mesa libmirprotobuf-dev libmirprotobuf0 libmozjs-24-0 libmozjs-24-bin libmozjs-24-dev libmutter-dev libmutter0c libnautilus-extension-dev libnet-http-perl libnm-glib-dev libnm-gtk-dev libnm-util-dev libnotify-dev libnotify-doc libnspr4-dev libnss3-dev libp11-kit-dev libpanel-applet-4-0 libpanel-applet-4-dev libpanel-applet-4-doc libpango1.0-dev libpango1.0-doc libpangomm-1.4-dev libpathplan4 libpcre3-dev libpcrecpp0 libpeas-dev libpixman-1-dev libpng12-dev libprotobuf-dev libprotobuf-lite8 libpthread-stubs0-dev libpython-dev libpython2.7-dev librest-dev librsvg2-dev libsecret-1-dev libseed-gtk3-0 libseed-gtk3-dev libsigc++-2.0-dev libsigsegv2 libsm-dev libsoup-gnome2.4-dev libsoup2.4-dev libsp1c2 libsqlite3-dev libstartup-notification0-dev libsys-hostname-long-perl libtasn1-3-bin libtasn1-3-dev libtasn1-6-dev libtasn1-bin libtelepathy-farstream-dev libtelepathy-glib-dev libtelepathy-glib-doc libtool libtotem-plparser-dev libudev-dev libudisks2-dev libvala-0.22-0 libvte-2.90-dev libvte-2.90-doc libwacom-dev libwayland-dev libwebkitgtk-3.0-dev libwebkitgtk-common-dev libwnck-3-dev libwww-perl libwww-robotrules-perl libx11-dev libx11-doc libx11-xcb-dev libxau-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxkbcommon-dev libxkbfile-dev libxklavier-dev libxml-parser-perl libxml2-dev libxml2-doc libxml2-utils libxrandr-dev libxrender-dev libxres-dev libxshmfence-dev libxtst-dev libxxf86vm-dev m4 mesa-common-dev mircommon-dev mm-common mutter-common network-manager-dev po-debconf policykit-1-doc python-dev python-gi-dev python-gobject-2-dev python-gobject-dev python-mako python-markupsafe python2.7-dev sgml-data sp valac valac-0.22 valac-0.22-vapi x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-dri2-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-record-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xorg-sgml-doctools xsltproc xtrans-dev yelp-tools zlib1g-dev The following packages will be upgraded: evince evolution-data-server evolution-data-server-common evolution-data-server-online-accounts gir1.2-ebook-1.2 gir1.2-ebookcontacts-1.2 gir1.2-edataserver-1.2 gir1.2-freedesktop gir1.2-glib-2.0 gir1.2-gnomebluetooth-1.0 gir1.2-gtk-3.0 gir1.2-javascriptcoregtk-3.0 gir1.2-networkmanager-1.0 gir1.2-pango-1.0 gir1.2-webkit-3.0 gir1.2-wnck-3.0 gnome-bluetooth gnome-desktop3-data libarchive13 libcairo-gobject2 libcairo2 libcamel-1.2-45 libclutter-gtk-1.0-0 libdbus-1-3 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libebackend-1.2-7 libebook-1.2-14 libebook-contacts-1.2-0 libecal-1.2-16 libedata-book-1.2-20 libedata-cal-1.2-23 libedataserver-1.2-18 libegl1-mesa libegl1-mesa-drivers libevdocument3-4 libevview3-3 libfreetype6 libgail-3-0 libgail-common libgail18 libgbm1 libgirepository-1.0-1 libgl1-mesa-glx libglapi-mesa libgles2-mesa libglib2.0-0 libglib2.0-bin libgnome-bluetooth11 libgnome-desktop-3-7 libgtk-3-0 libgtk2.0-0 libgtk2.0-bin libgweather-3-6 libharfbuzz-icu0 libharfbuzz0b libjavascriptcoregtk-3.0-0 libnautilus-extension1a libnm-glib4 libnm-gtk-common libnm-gtk0 libnm-util2 libnspr4 libnss3 libnss3-1d libnss3-nssdb libpango-1.0-0 libpango1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpangoxft-1.0-0 libtasn1-6 libudev1 libwayland-egl1-mesa libwebkitgtk-3.0-0 libwebkitgtk-3.0-common libwnck-3-0 libxext6 libxfixes3 libxi6 libxml2 libxrender1 network-manager-gnome python-gi python-gi-cairo python3-gi python3-gi-cairo udev 90 upgraded, 337 newly installed, 0 to remove and 344 not upgraded. Need to get 118 MB of archives. After this operation, 507 MB of additional disk space will be used. Do you want to continue? [Y/n]
查看pkg和gtk版本:
可見gtk的2.x和3.x版本均可用。
編輯和運行測試程序:
/************************************************************************* > File Name: hellogtk.c > Author: Nick > Mail: [email protected] > Created Time: 2015年05月26日 星期二 22時55分11秒 ************************************************************************/ #include <gtk/gtk.h> int main(int argc,char *argv[]) { GtkWidget *window; GtkWidget *label; gtk_init(&argc,&argv); /* create the main, top level, window */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); /* give it the title */ gtk_window_set_title(GTK_WINDOW(window),"Hello World"); /* connect the destroy signal of the window to gtk_main_quit * when the window is about to be destroyed we get a notification and * stop the main GTK+ loop */ g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL); /* create the "Hello, World" label */ label = gtk_label_new("Hello, World"); /* and insert it into the main window */ gtk_container_add(GTK_CONTAINER(window),label); /* make sure that everything, window and label, are visible */ gtk_widget_show_all(window); /* start the main loop, and let it rest until the application is closed */ gtk_main(); return 0; }
編譯命令:
$ gcc -o Helloworld hellogtk.c `pkg-config --cflags --libs gtk+-3.0`
$ sudo apt-get install gnome-devel The following extra packages will be installed: accerciser anjuta anjuta-common anjuta-extras autogen glade ipython3 libanjuta-3-0 libapr1 libaprutil1 libgda-5.0-4 libgda-5.0-common libgdl-3-5 libgdl-3-common libgladeui-2-6 libgladeui-common libjs-jquery libopts25 libopts25-dev libserf-1-1 libsvn1 libvala-0.20-0 python3-decorator python3-simplegeneric valac-0.20 valac-0.20-vapi Suggested packages: ipython3-notebook ipython3-qtconsole python3-zmq libgda-5.0-bin libgda-5.0-mysql libgda-5.0-postgres javascript-common The following NEW packages will be installed: accerciser anjuta anjuta-common anjuta-extras autogen glade gnome-devel ipython3 libanjuta-3-0 libapr1 libaprutil1 libgda-5.0-4 libgda-5.0-common libgdl-3-5 libgdl-3-common libgladeui-2-6 libgladeui-common libjs-jquery libopts25 libopts25-dev libserf-1-1 libsvn1 libvala-0.20-0 python3-decorator python3-simplegeneric valac-0.20 valac-0.20-vapi 0 upgraded, 27 newly installed, 0 to remove and 345 not upgraded. Need to get 15.0 MB of archives. After this operation, 81.9 MB of additional disk space will be used. Do you want to continue? [Y/n]
$ sudo apt-get install gnome-devel-docs Reading package lists... Done Building dependency tree Reading state information... Done gnome-devel-docs is already the newest version. gnome-devel-docs set to manually installed.
PS:一條語句安裝glib、gtk、幫助手冊等資源
sudo apt-get install gnome-devel gnome-devel-docs
似乎對於安裝幫助手冊不起作用。