Glib庫的安裝和編譯

2021-05-27 11:08:43 字數 2728 閱讀 3511

glib概述

1 編譯glib包

編譯glib包-如何編譯glib自身

1.1 unix下編譯

在unix中,glib使用標準的gnu編譯系統,使用autoconf進行包的配置和解決可移植性問題,automake用於編譯符合gunu編碼標準的makefile檔案,libtool用於多個平台上編譯共享庫。編譯和安裝glib庫的正常次序如下:

# ./configure

# make

# make all

由gnu autoconf提供的標準選項可以被傳遞給configure指令碼。請檢視autoconf文件,或者執行./configure --help獲得關於標準選項的資訊。

gtk+文件包括關於編譯過程和方法的更詳細資訊。

1.2 依賴關係

在你編譯glib庫之前,你需要把一些其它的工具和庫安裝到系統中。在編譯過程中需要兩個工具是pkg-config和gnu make。

* pkg-config是用於跟蹤glib庫中使用的各種庫需要的編譯標誌的工具;

glib依賴的許多其它庫,包括:

* libiconv庫:字符集轉換庫

* libintl庫:處理訊息轉換資料庫

* pthread庫:執行緒實現庫

* pcre庫:正規表示式庫

* libselinux庫:linux安全庫

1.3 其它的配置選項

glib庫支援的configure指令碼選項有:

configure [[--enable-debug=[no|minimum|yes]]] [[--disable-gc-friendly] | [--enable-gc-friendly]] [[--disable-mem-pools] | [--enable-mem-pools]] [[--disable-threads] | [--enable-threads]] [[--with-threads=[none|posix|dce|win32]]] [[--disable-regex] | [--enable-regex]] [[--with-pcre=[internal|system]]] [[--disable-included-printf] | [--enable-included-printf]] [[--disable-bsymbolic] | [--enable-bsymbolic]] [[--disable-gtk-doc] | [--enable-gtk-doc]] [[--disable-man] | [--enable-man]] [[--disable-xattr] | [--enable-xattr]] [[--disable-selinux] | [--enable-selinux]] [[--disable-dtrace] | [--enable-dtrace]] [[--disable-systemtap] | [--enable-systemtap]] [[--enable-gcov] | [--disable-gcov]] [[--with-runtime-libdir=relpath]]

2 編譯glib應用程式

2.1 unix下編譯glib應用程式

為了編譯glib應用程式,你需要告訴編譯器那裡找到glib的標頭檔案和動態庫,這裡使用pkg-config工具來完成。

下面互動式shell會話顯示pkg-config如何使用:

# pkg-config --cflags glib-2.0

-i/usr/include/glib-2.0 -i/usr/lib/glib-2.0/include

# pkg-config --libs glib-2.0

-l/usr/lib -lm -lglib-2.0

如果你的應用使用執行緒或者gobject特徵,它必須下面pkg-config返回標頭檔案和庫來編譯和連線。

# pkg-config --cflags --libs gthread-2.0

# pkg-config --cflags --libs gobject-2.0

如果你的應用程式使用模組,使用下面pkg-config獲得的標頭檔案和庫檔案

# pkg-config --cflags --libs gmodule-export-2.0

# pkg-config --cflags --libs gmodule-2.0

最簡單的編譯程式的方法是使用shell的「backticks」功能。如果你把命令放置在backtick之間,那麼它的輸出將替代執行前的命令列,因此編譯glib helloworld的命令如下:

# cc `pkg-config --cflags --libs glib-2.0` hello.c -o hello

如果你希望確保你的程式沒有使用任何deprecated功能,你可以使用命令列選項-dg_disable_deprecated=1定義預編譯符號g_disable_deprecated。

使用glib被推薦的方式是只包括三個頂級標頭檔案glib.h,glib-object.h,gio.h。仍然,這裡有一些例外,下面這些標頭檔案必須分別包括:gmodule.h,glib/gi18n-lib.h或glib/gi18n.h,glib/gprintf.h和glib/gstdio.h。

從2.17版本開始,當單獨的標頭檔案直接被包含時,glib強制產生錯誤。為了幫助過度,預設的情況下不開啟強制。如果要開啟強制功能,通過使用命令列選項-dg_disable_signle_includes來定義預編譯符號g_disable_signle_includes.

在windows下編譯glib庫

glib庫是跨平台的c語言函式庫,是gtk 庫和gnome的基礎。glib可以在多個平台下使用,比如linux unix windows等。glib為許多標準的 常用的c語言結構提供了相應的替代物。ps d glib 2.64.2 meson build prefix c binary ps d g...

ubuntu10 04下編譯glib庫

ubuntu10.04 glib版本 2.32.3 libc指c函式庫,這是乙個通稱,而glibc是gnu實現的libc,至於glib是一組較高層的函式庫,比如鍊錶 hash等,在linux中glib是建立在glibc之上的,qt的庫就叫做qt,也是建立在glibc和其他一些基本庫之上。glib是g...

安裝高版本glib和pcre正則依賴庫的坑!

因為專案需要安裝高版本的glib,而glib庫依賴於pcre庫,首先安裝pcre庫有幾點需要注意的地方 configure prefix 安裝路徑 enable utf 8 enable unicode properties 這行命令很簡單,長選項 prefix用於配置軟體包的安裝目錄,兩個 ena...