2008年2月1日 星期五

GTK+ on DirectFB on Creator PXA270

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


把 GTK+ 和 DirectFB 放到新華的 Creator 實驗板上
基本上這是報告釋出的產品
為避免被說是抄來的所以 Delay 了一點時間...
記下修改過程供參考
本文僅供該實驗板使用
其他實驗板怎麼改我不知道,先聲明XD

然後寫一隻程式丟上去跑 : 踩地雷
用觸控板操作
因為不知道怎麼接收點擊信號
因此 button 的事件是用滑鼠移過偵測
所以那些輸贏畫面除了是"獎品"XD, 亦是滑鼠引導的對話框
把按鈕放到左上角,使用者必須移過去才能繼續
以避免誤觸開新遊戲的地雷

Kernel 和 Toolchain 均採用板子光碟裡附的
Kernel 2.6.15.3 和 arm-gcc 4.0.2



export projroot=/usr/myproj
export target=arm-unknown-linux-gnu
export toolroot=$projroot/toolchain/gcc-4.0.2-glibc-2.3.3/$target
export PATH=$PATH:$toolroot/bin
export sysroot=$projroot/

export PREFIX=/usr/rootfs/pxa270-gui
export LD_LIBRARY_PATH=$PREFIX/lib
export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig
export PATH=$PREFIX/bin:$PATH


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

gettext-0.16
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--disable-static --disable-java
make
make install

glib-2.12.12
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

busybox 1.8.2 抽出cmp工具供後面套件使用
make menuconfig
make CROSS_COMPILE=$target- CONFIG_PREFIX=./_install install

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

freetype-2.3.5
./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.4.92
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--with-freetype-config=$PREFIX/bin/freetype-config --disable-static \
--with-confdir=$PREFIX/etc/fonts --enable-libxml2 --with-arch=arm
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

DirectFB-1.0.0
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--disable-gif CFLAGS="-I$PREFIX/include" LDFLAGS="-L$PREFIX/lib" \
CPPFLAGS="-I$PREFIX/include" --with-sysroot=$PREFIX --exec-prefix=$PREFIX \
--with-tests --with-gfxdrivers=none --disable-sdl --disable-x11 --enable-multi
make
make install

修改 Kernel driver
# 修改 kernel 裡(drivers/mfd)的 ucb1c00-ts.c並編譯
// { TFT_MTLCD_0353224A, 320, 240, 60, 68, 965, 940 , "MTLCD-0353224A" , 2}, 
// MTLCD-0353224(3.5" 320*240 Landscape)
{ TFT_MTLCD_0353224A, 240, 320, 60, 68, 965, 940 , "MTLCD-0353224A" , 2}, 
// MTLCD-0353224(3.5" 320*240 Landscape)
# 將tmpfs掛載至/dev/shm供DirectFB使用,接著繼續往下編譯。

cairo-1.4.12
./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.16.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.10.14
./configure --host=$target --build=i386-linux --prefix=$PREFIX \
--with-gdktarget=directfb --without-libtiff CFLAGS="-I$PREFIX/include" \
--disable-glibtest --disable-largefile \
LDFLAGS="-L$PREFIX/lib" CPPFLAGS="-I$PREFIX/include"
# 到 Makefile 移除 printbackend (若編譯到此模組失敗時才動手)
make
make install

e2fsprog 1.40.2
./configure --host=$target --build=$target --prefix=$PREFIX
cd misc
make CC=$target-gcc LD=$target-ld
# 添入boot參數
setenv bootargs root=/dev/mtdblock3 rw rootfstype=jffs2 console=ttyS0,9600n8 mem=64M video=pxafb:mode:280x330-16,dpc:DPC lcdtype=MTLCD-0353224A


開機步驟加入執行檔路徑即可自動執行。
以上是編譯過程
詳細開機程序不詳述
很多書籍有
這是開啟畫面 :


新遊戲畫面


遊戲中畫面


輸了的畫面XD


贏了,有獎品......

雖然有點噁XDDDDDD

沒有留言:

張貼留言

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