向 Sigma8634 移植 DirectFB
DirectFB 是现在口碑很好的基于 FrameBuffer 的 GUI 开发库,相对于更老一点的 SDL,用
DirectFB 来开发 GUI 程序更加方便,而且现在的越来越多的硬件也开始支持 DirectFB,有
了硬件加速,GUI 的图形绘制速度自然就更快了。
理论上来说只要系统包含了 FrameBuffer 设备,就可以使用 DirectFB,当然使用前免不了要
移植很多东西。幸运的是 Sigma8634 包含了对 FrameBuffer 的支持,不幸的是没有包含对
DirectFB 的硬加速支持。也就是说, DirectFB 的一切图形功能都得依靠那颗 300Mhz 的
MIPS CPU。所以,在 Sigma8634 上,GUI 程序的分辨率最合适的是 640x480,再高了贴图
就比较慢了。
移植 DirectFB 需要编译的包如下:
zlib-1.2.3,不是必须的,因为 sigma8634 的 rootfs 编译时会包含这个,可以直接使用这里编
译好的。
freetype-2.1.10,字体,不搞这个恐怕显示不了中文。
ligpng-1.2.12-mips,png 图片的支持。
jpeg-6b,jpeg 图片的支持,如果确定只用 png,不用 jpeg,可以在 DirectFB 的 configure 时
用参数关闭 jpeg 的要求。
DirectFB-1.0.0,核心内容。。
DirectFB-example-1.0.0,例子程序,可以用来测试 DirectFB 是否移植成功。
一个一个来。
zlib-1.2.3:
# ./configure --shared --prefix=/mnt/usr
# vi Makefile
把 Makfile 里的 gcc,ar,ranlib 全都替换成 mipsel-linux-gcc,mipsel-linux-ar,mipsel-linux-
ranlib。
# make
# make install
freetype-2.1.10:
# ./configure --host=mipsel-linux --prefix=/mnt/usr
# make
# make install
有些程序在检查系统是否包含了 freetype 时,会直接去/usr/lib/pkgconfig 下检查,所以:
# cp -a /mnt/usr/lib/pkgconfig/freetype* /usr/lib/pkgconfig/
# cp -a /mnt/usr/bin/freetype-config /usr/bin
记得先备份系统中原有的内容。
libpng-1.2.12-mips:
# ./configure --host=mipsel-linux --prefix=/mnt/usr --with-gnu-ld
# vi config.h
把#define malloc rpl_malloc 这一行注释掉。