首先:C代碼的源碼安裝必須要安裝gcc的編譯器,CentOS7.0裝好之后默認是不安裝gcc編譯器的。
安裝gcc:rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm
安裝上g++:rpm -ivh gcc-c++-4.8.5-4.el7.x86_64.rpm
下面介紹安裝GTK+要用到的rpm包、源碼壓縮包、yum安裝命令、./configure(配置)時用到的參數以及安裝了那些東西,安裝位置:
1、rpm包在CentOS光盤的Packages文件夾中又幾乎全部的rpm包,上面安裝編譯器的包就是從Packages文件夾中找到的,基本不用另
外下載。查找某個rpm包命令:ls -l | grep [xxxx]
2、源代碼壓縮包在GTK+官網上需要Glib2.50,ATK2.22,Gdk-Pixbuf2.36,GObject-Introspection1.50,Pango1.40,GTK+3.22
六個源代碼壓縮包,實際安裝過程中由于依賴關系存在還可能需要其他的源代碼包,等用到再作說明。GTK+官網所需源碼包截
圖(GTK+的官網沒事多看看):
3、yum命令安裝,既然Packages里面有幾乎全部的rpm包干嘛還使用yum命令?實際安裝包過程中,包的依賴包太多,依賴包又需要
大量其他的依賴包,容易搞混,使用一個yum命令輕松搞定。
4、源碼安裝庫或者程序是./configure這一步一般不用給出參數,大不了給出--PRefix=/opt/gtk+參數更改默認的安裝位置,安裝
gtk+的過程中還會用到其他的參數用到時候再做說明。
5、安裝位置:在gtk+的安裝過程中,所有源碼安裝的文件都默認安裝在/usr/local下的bin,include,lib,share。bin下是二進制的可執行
命令,include下是C語言的頭文件,就是.h文件,lib里面就是一些庫文件,share就是一些說明文檔、幫助文檔,就是是用man命
令是出來的幫助。
在安裝GTK+之前先介紹GTK+所需要的每一個依賴包或者庫的作用,下面這張圖很詳細說明了GTK+的構成:
1)Glib:The GLib library provides core non-graphical(繪畫的) functionality(功能) such as high level data types, Unicode
manipulation(操作、控制), and an object and type system to C programs(GTK+官網對Glib庫的介紹)。其實就
是linux平臺下常用的C語言函數庫,提供了C語言的常用數據結構的定義、相關的處理函數,有趣而實用的宏,可
以值的封裝和一些運行時機能,如事件循環、線程、動態調用、對象系統等的API。
2)ATK:ATK is the accessibility(易接近、可達的) Toolkit(工具包). It provides a set of generic(一般的) interfaces allowing
accessibility technologies such as screen readers to interact (互動)with a graphical user interface(GTK+官網對ATK
庫的介紹)。
3)Cairo:在GTK+的官網中并沒有提到需要它,實際肯定需要。是一個跨平臺的開放源代碼的矢量圖形函數庫,可以提供高質量的顯
示和打印輸出。主戰場在Linux的Gnome桌面環境領域。
4)Gdk-Pixbuf:provides facilities(能力,場,設備) for loading images in a variety of file formats(GTK+官網對Gdk-Pixbuf的介
紹)。做界面開發嗎,專門處理圖片的。
5)Gobject-Introspection:is a framework for making introspection(自我反省; 內省) data available to language
bindings(GTK+官網對GIOde介紹)。上圖中GIO,用于產生與解析 C 程序庫 API 元信
息,以便于動態語言(或托管語言)綁定基于 C + GObject 的程序庫。
6)Pango:is a library for internationalized text handling(GTK+官網對Pango的介紹)。國際化的文本處理庫,說白了處理文字
的。
第一步:glib-2.50.2安裝:
1)zlib-devel,光盤鏡像中有 [root@CentOS Packages]# rpm -ivh zlib-devel-1.2.7-15.el7.x86_64.rpm
2)libffi-devel,光盤鏡像中有 [root@CentOS Packages]# rpm -ivh libffi-devel-3.0.13-16.el7.x86_64.rpm
3)libmount-devel,鏡像中也含有該包,不過有依賴關系,依賴關系并不多,可以嘗試一個個手動裝上去,為了方便使用yum命
令 [root@CentOS Packages]# yum install libmount-devel
4)pcre庫光盤中沒有需要到官網http://www.pcre.org/下載源代碼包。具體分4步進行:
1、配置./configure --enable-utf-8 --enable-unicode-properties 其中給出的配置參數是防止在glib在make是出現The system-
supplied PCRE does not support unicode properties or UTF-8的錯誤。
2、構建make
3、安裝make install(氣質就是把這些二進制命令、頭文件、庫文件、幫助文檔拷貝到安裝目錄對應的文件夾下) 注意使用root權
限。
4、配置PKG_CONFIG_PATH環境變量 安裝庫文件時都會在安裝目錄的lib/pkgconfig目錄下生成.pc文件,這個.pc文件記錄著庫的
名稱、版本、安裝路徑等信息(有興趣的話可以找到文件打開看看)。配置PKG_CONFIG_PATH變量就是告訴pkg-config程序除了
在系統默認路徑下搜索.pc文件,還要到用戶配置的目錄下搜索.pc文件。后面還會有一個LB_LIBRARY_PATH變量,用到時再作
說明。配置如下:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH5)1至4步只是把要安裝glib的準備工作做完,正式開始源碼安裝glib,也是分4步:
1、./configure 想要改變安裝路徑的話就加--prefix=參數,本次安裝過程中不需要。
2、make
3、make install 在該文件夾下沒有吸入權限的話,使用root權限
4、配置環境變量 此時不僅要配PKG_CONFIG_PATH,還有LD_LIBRARY_PATH,該變量的作用是在編譯期間或者程序運行期間所需
要的動態庫路徑,配置如下:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHexport LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH如果沒有配置LD_LIBRARY_PATH變量,發現在后續的gtk+安裝中會出現’pkg-config --modversion glib-2.0‘ returned
2.50.2,but GLIB(2.42.2) was found!的問題,并提示移除老版本的glib。在網上也有人遇到這樣的問題并且給出了刪除
老版本glib的方法,but經過本人認真分析、仔細檢查在/usr下的bin、include、lib、share目錄并沒有任何glib命名或開
頭的任何文件或者文件夾,估計glib2.42.2根本沒有安裝(至少沒有裝在/usr這個目錄下)。后來也是在網上查到配置LD
_LIBRARY_PATH這個變量可以解決在后續安裝中出現的這個問題。
第二步:atk-2.22.0安裝,在前面的基礎上進行配置、構建、安裝,不會出現任何問題。
1)./configure 不用給出配置參數,除非你要改變安裝路徑
2)make
3)make install
第三步:安裝cairo開發包,關于cairo有2個開發包要裝。1、cairo-devel 2、cairo-gobject-devel
1)cairo-devel包光盤中有,但是依賴關系真的很多,好吧!所以使用yum安裝
[root@CentOS Packages]# yum install cairo-devel
2)cairo-gobject-devel包光盤中有,直接安裝
[root@CentOS Packages]# rpm -ivh cairo-gobject-devel-1.14.2-1.el7.x86_64.rpm
第四步:gdk-pixbuf-2.36.4安裝
1)需要3個依賴包libtiff-devel,libjpeg-turbo-devel,libpng,libpng-devel。鏡像中都有,直接安裝
[root@CentOS Packages]# rpm -ivh libtiff-devel-4.0.3-14.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh libjpeg-turbo-devel-1.2.90-5.el7.x86_64.rpm[root@CentOS Packages]# rpm -e --nodeps libpng-2:1.5.13-7.el7_2.x86_64.rpm [root@CentOS Packages]# rpm -ivh libpng-1.5.13-5.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh libpng-devel-1.5.13-5.el7.x86_64.rpm其中第3行卸載的較新版的libpng,第4行安裝了低版本的libpng,主要是為了配對對應的-devel開發包;注意第3步的--nodepes
不顧及依賴關系的卸載包不要隨便使用,僅在這里本人試過幾次沒什么大問題,若是其他包的卸載就不一定了,我就遇到過,比
如終端打不開,--nodepes用的時候要慎重。
2)固定的3步:配置、構建、安裝;至于PKG_CONFIG_PATH、LD_LIBRARY_PATH環境變量前面已經配過,在同一個終端下不用再
配。
1、./configure
2、make
3、make install
第五步:gobject-introspection-1.50安裝,鑒于CentOS7.0中gobject-introspection-1.42包已經被安裝,只要把光盤中對應的-devel包裝
上就行了,不安裝1.50版本的也行。gobject-introspection-devel有依賴關系,按順序安裝。
1)依賴包順序是m4、perl-Data-Dumper、autoconf、perl-Thread-Queue、perl-Test-Harness、automake、libtool;
python-tempita、pyOpenSSL、python-paste、python-beaker、python-markupsafe、python-mako(這些包鏡像中都有)
[root@CentOS Packages]# rpm -ivh m4-1.4.16-10.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh perl-Data-Dumper-2.145-3.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh autoconf-2.69-11.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh perl-Thread-Queue-3.02-2.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh perl-Test-Harness-3.28-3.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh automake-1.13.4-3.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh libtool-2.4.2-20.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh python-tempita-0.5.1-6.el7.noarch.rpm[root@CentOS Packages]rpm -ivh pyOpenSSL-0.13.1-3.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh python-paste-1.7.5.1-9.20111221hg1498.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh python-beaker-1.5.4-10.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh python-markupsafe-0.11-10.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh python-mako-0.8.1-2.el7.noarch.rpm2)鏡像中有gobject-introspection-devel-1.42.0-1.el7.x86_64.rpm,直接安裝
[root@CentOS Packages]# rpm -ivh gobject-introspection-devel-1.42.0-1.el7.x86_64.rpm第六步:pango-1.40.3安裝 先說明鏡像中含有pango和pango-devel的1.40.3版本,但是gtk+3.22.7需要1.37.3以上的版本,只能源碼安裝了。
1)安裝依賴包libicu-devel、harfbuzz-devel、libxft-deve
[root@CentOS Packages]# rpm -ivh libicu-devel-50.1.2-15.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh harfbuzz-devel-0.9.36-1.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh libXft-devel-2.3.2-2.el7.x86_64.rpm2)傳統的3步搞定,./configure、make、makeinstall,環境變量在前面已經配過,同個終端下不用再配。
配置完成后出現會下面內容,輸出$?值為0即配置正確。
第七步:gtk+-3.22.7安裝,在配置過程中通過錯誤提示安裝對應的rpm包。
1)配置錯誤XIput2 extension not found 安裝libXi-devel包
配置錯誤No package ’epoxy‘ found 使用yum安裝libepoxy-devel包(鏡像中沒有該包)
配置錯誤No package ’atk-bridge-2.0‘ found 這個atk-bridge和第二步安裝的atk不是一回事,依次安裝dbus-devel,
at-spi2-core-devel。命令如下:
[root@CentOS Packages]# rpm -ivh libXi-devel-1.7.4-2.el7.x86_64.rpm[root@CentOS Packages]# yum install libepoxy-devel[root@CentOS Packages]# rpm -ivh dbus-devel-1.6.12-13.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh at-spi2-atk-devel-2.8.1-4.el7.x86_64.rpm2)經典的3步:配置、構建、安裝。其中為例在make時不出現Couldn't find include 'GdkPixbuf-2.0.gir'問題,使用./configure --
enable-introspection=no
3)查看gtk+的版本:
終于裝完了,大年初三那天晚上裝完后,內心的小激動一晚上沒有睡著覺
。
新聞熱點
疑難解答