向Sigma8634移植DirectFB
2007-08-16 16:18
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 & 加个&,防止死机还得重启目标机。 |