2009年10月17日 星期六

x86 系統上編譯 GTK on DirectFB

本文在 2009/10/17 11:04 發表於 Yahoo!奇摩部落格
因Yahoo!奇摩部落格將於2013年12月26日終止服務故遷移至此


第 3 次編譯囉XD
這次的目標是 Multi-application core
之前兩版都是單一程式的版本
在  1.1.0 還 1.20 以後完整版 fusion 啟動
到了 1.3.0 以後 fusion 從 DirectFB 抽出
可以獨立使用
所以嘛...編譯過程會有些不同
再紀錄一下唄~

測試平台 :


EPIA-M 加上一張 CF 卡
和 EPIA 類別裡那張 EPIA-MII 不太一樣, 是舊版的, 由網拍取得
電源線只接上需要的

大叔是有練過的, 好孩子不要學~XD

開始前先下載 patch : dfb-patch.zip
來源 :
http://mail.directfb.org/pipermail/directfb-dev/2008-September/004543.html
http://mail.directfb.org/pipermail/directfb-dev/2008-May/004238.html
patch 是 DirectFB 開發人員做的
用來補強 GTK+ 和 Cairo 的效能, 並修正一些繪圖的問題
若不打直接編會變成這樣 :

部分區域會不更新或是變黑
此更新檔沒有修正佈景主題引擎的問題
所以若加裝佈景主題還是會變黑
不加裝則沒事
開始編譯

環境變數

export PATH=$PATH:/myproj/toolchain/compilers/i686-linux-ct4.1.0-2.3.6tls/bin
export target=i686-unknown-linux-gnu
export PREFIX=/myproj/r_multitouch
export LD_LIBRARY_PATH=$PREFIX/lib
export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig 

zlib-1.2.3
./configure --prefix=$PREFIX –shared
# 修改 makefile,改這個: LDSHARED=$(CC) -shared 
–Wl,-soname,libz.so.1
make CC=$target-gcc
make install

libpng-1.2.23
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
CFLAGS="-I$PREFIX/include" LDFLAGS="-L$PREFIX/lib" --disable-static
make
make install

glib-2.18.0
sudo apt-get install libglib2.0-dev
# 在configure裡搜尋cannot run test program while cross compiling和cross-compiling
# 並移除其下方的{ (exit 1); exit 1; };
./configure --host=$target --build=i386-linux --prefix=$PREFIX
# 修改 glib/giounix.c 改這: #include <bits posix1_lim.h>
make
make install

atk-1.23.5
./configure --host=$target --build=i386-linux --prefix=$PREFIX --disable-glibtest
# Makefile 中找到 $(GLIB_GENMARSHAL) 的指令,將其註解,
# 並在target上執行指令產生對應檔案,修改 #define PATH_MAX 260
make
make install


freetype-2.3.7
./configure --host=$target --build=i386-linux --prefix=$PREFIX --disable-static
make
make install

libxml2-2.6.30
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--without-debug --disable-static
# 修改 testModule.c 加上: #define PATH_MAX 260
make
make install

fontconfig-2.6.0
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--with-freetype-config=$PREFIX/bin/freetype-config --disable-static \
--with-confdir=$PREFIX/etc/fonts --enable-libxml2
make
make install

jpeg v0.6b
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--exec-prefix=$PREFIX --disable-static
make CC=$target-gcc CXX=$target-g++ AR="$target-ar rc" STRIP=$target-strip \
LD=$target-ld RANLIB=$target-ranlib AS=$target-as NM=$target-nm \
AR2=$target-ranlib
make install
make install-lib
make install-headers

Fusion Device 8.0.1
複製fusion 8.0.1原始碼中的fusion資料夾到kernel的<kernel_src_root>/drivers/char/Kconfig目錄下,並修改Kconfig檔,新增以下內容至<kernel_src_root>/drivers/char/Kconfig : 

config FUSION_DEVICE
    tristate "Fusion device 8.0.1"
    ---help---
      Fusion device 8.0.1

新增以下內容至<kernel_src_root>/drivers/char/Makefile :
obj-$(CONFIG_FUSION_DEVICE)    += fusion/

完成後編譯kernel

DirectFB-1.2.7
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--disable-gif CFLAGS="-I$PREFIX/include -I/myproj/kernel/linux-2.6.24/include" \
LDFLAGS="-L$PREFIX/lib" CPPFLAGS="-I$PREFIX/include" \
--with-sysroot=$PREFIX --exec-prefix=$PREFIX --with-tests \
--disable-sdl --disable-x11 --enable-multi --with-gfxdrivers=cle266 \
--with-inputdrivers=keyboard,ps2mouse --enable-fbdev \
FREETYPE_CFLAGS="`pkg-config --cflags freetype2`" \
FREETYPE_LIBS="`pkg-config --libs freetype2`" --disable-debug-support
make
make install

pixman-0.11.10
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--disable-sse2 --disable-vmx
make
make install

cairo-1.6.4
# 打patch 
patch -p0 < cairo-1.6.4-dok-all.patch
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--enable-directfb=yes --disable-xlib --enable-ps=yes --enable-png=yes \
--disable-win32 --without-x --enable-freetype=yes --enable-pdf=yes \
--enable-svg=yes LDFLAGS="-L$PREFIX/lib" CFLAGS="-I$PREFIX/include" --disable-static
make
make install
# 新增以下 lib 到 cairo.pc 中: 
# -lfreetype -lfontconfig -ldirectfb -lz -ldirect -lpng12 -lxml2 -lfusion
pango-1.20.5
./configure --host=$target --build=i386-linux --prefix=$PREFIX --without-x \
LDFLAGS="-L$PREFIX/lib" CFLAGS="-I$PREFIX/include"
make
make install
# 新增以下lib到pango.pc中: -lglib-2.0 -lgmodule-2.0 -lgobject-2.0
# 新增以下lib到pangocairo.pc中: -lpangoft2-1.0
# 在目標平台上執行pango-querymodules > $PREFIX/etc/pango/pango.modules來產生組態檔

gtk+-2.12.9
# 打patch
patch -p0 < gtk+-2.12.9-dok-all.patch
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--with-gdktarget=directfb --without-libtiff CFLAGS="-I$PREFIX/include" \
--disable-glibtest --disable-largefile --without-libjasper \
LDFLAGS="-L$PREFIX/lib" CPPFLAGS="-I$PREFIX/include" \
--without-x --without-xinput --without-pic
make
make install

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。