【转】向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这一行注释掉。
如果configure时找不到zlib,可以把编译好的libz.so和zlib.h放入交叉编译器的动态库目录和头文件目录。
# make
# make install

同样,可以把/mnt/usr/lib/pkgconfig/libpng*拷贝到/usr/lib下
# cp -a /mnt/usr/lib/pkgconfig/libpng* /usr/lib/pkgconfig/

jpeg-6b:
# ./configure --host=mipsel-linux --prefix=/mnt/usr/ --enable-shared
# vi Makefile

把gcc改成mipsel-linux-gcc
# make
# make install


DirectFB-1.0.0:
# ./configure --with-gfxdrivers=none --prefix=/mnt/usr --host=mipsel-linux --enable-sdl=no
如果需要关闭jpeg的支持,可以加上--enable-jpeg=no。
这里设置的DirectFB的安装路径是/mnt/usr,那么在目标系统中也必须保证DirectFB是在这样的一个目录中。因为DirectFB编译时已经把这个目录编译到程序中,无法后期设置。
# vi ./lib/direct/system.c

#define PAGE_SIZE sysconf(_SC_PAGESIZE)
#endif

后加入
#define PAGE_SIZE (1<<16)
PAGE_SIZE如果是其他数值,这里修改一下就好。
# make
# make install
# cp -a /mnt/usr/lib/pkgconfig/direct* /usr/lib/pkgconfig/
# cp -a /mnt/usr/lib/pkgconfig/fusion* /usr/lib/pkgconfig/


DirectFB-examples-1.0.0:
# ./configure --prefix=/mnt/usr --host=mipsel-linux
# vi ./src/Makefile

去掉SUBDIRS中的df_neo、spacedream
去掉ve_test相关行
去掉bin_PROGRAMS中的df_texture
# make
# make install


一切ok之后,把/mnt/usr/下的内容全部复制到目标机的/mnt/usr/下,这样才能确保DirectFB可以正常运作。然后在目标机中来运行个程序测试下吧。
# /mnt/usr/bin/df_window &
加个&,防止死机还得重启目标机。
转载地址:http://blog.chinaunix.net/u3/112728/showart_2213553.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值