對於嵌入式開發人員來說,ubuntu 是一個應用範圍相當廣的linux操作系統了。通過該開源系統,實現一些列我們所想實現的衆多開發。然而純淨的ubuntu只是攜帶了很少的開源庫,要想在實際開發中使用到適合的開源庫或資源,我們就要在我們的ubuntu系統中移植我們所需要的資源庫。
glib庫是Linux平臺下最常用的C語言函數庫,它具有很好的可移植性和實用性。可以在多個平臺下使用,比如Linux、Unix、Windows等。glib庫封裝了基礎C語言的衆多功能,使得開發人員不用浪費過多的精力在基礎功能實現上,該庫包含了很好用的線程,線程池,隊列,同步隊列,內存管理,io通道,錯誤報告等衆多功能,我們可以在移植好glib庫後拿來即用,省去好多麻煩。
ubuntu移植glib庫方法步驟:
- 下載源碼包並解壓
百度盤連接: https://pan.baidu.com/s/14NyovYt-0GEuJ6MyLo_PVQ
提取碼:udle
解壓命令: tar -xvf glib-2.57.3 - 進入源碼解壓路徑,直接對該庫進行配置 ./configure
發現配置文件不適用 ,需要重新配置以下此配置文件 - 下載一個自動配置工具,自動編譯生成configure文件
apt-get install autoconf 安裝自動編譯工具
autoconf configure.ac 利用自動配置工具生成configure
提示錯誤: configure.ac:66: error: possibly undefined macro:
AM_INIT_AUTOMAKE If this token and others are legitimate,
please use m4_pattern_allow. See the Autoconf documentation. - 下載一些列需要的文件
autoreconf --install - 重新生成configure文件
autoconf configure.ac
成功生成configure文件 - 重新配置glib庫 配置文件
./configure
報錯:No package ‘libffi’ found - 下載lifffi裝到系統上,
解壓 “lifffi”源碼包並安裝
autoconf configure.ac 生成configure執行文件
./configure
make 報錯:makeinfo: 未找到命令
apt-get install texinfo
makeinstall - 重新配置glib庫配置文件
./configure
報錯:error: *** Could not find libmount - 下載libmount源碼並安裝
下載libmount源碼 apt-get source libmount-dev
配置libmount配置文件
./cdonfigure
報錯: configure: error: ncurses or ncursesw selected, but library not found (–without-ncurses to disable)
apt-get install libncurses5-dev libncursesw5-dev 安裝庫
配置libmount配置文件
./cdonfigure 成功
make 報錯: undefined reference tosysfs_init' ./configure --prefix=/home/zhoudy/util-linux-2.20.1/ --target=i686 --host=i686 make 報錯:undefined reference to
get_linux_version’
發現安裝依賴庫還是比較多的,所以嘗其他方法。
可以通過直接加載庫文件的形式來使用glib庫,有可能由於2.57.3 的版本功能完善,所以安裝依賴比較多,對於使用者來說,一般的功能沒什麼差別,如果想知道版本之間的差別,可以在官網上看介紹,合理適用版本。
在網上查看資料,發現glib可以通過直接引用其頭文件的方式加以使用,,這樣的方式極大的方便了開發者的開發,省去了配置時間,非常實用。我自己下載了glib_2.44.1 版本用於安裝。
裝載glib_2.44.1
-
將glib庫頭文件直接拷貝到用戶頭文件文件夾內,或者編譯頭文件路徑加上該路徑
cp -r /usr/local/include/glib-2.0/* /usr/include/
cp /usr/local/lib/glib-2.0/include/glibconfig.h /usr/include/ -
編寫一個小程序哦那個來測試glib是否可用:
#include <glib.h>
int main()
{
g_printf(“test glib\n”);
return 0;
} -
編譯程序測試:
gcc test1.c -o test -lglib-2.0 -levent
運行測試文件,./test 發現能夠打印出test glib ,證明glib可用。