一. DirectFB简介
DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,它集成了支持半透明的视窗系统以及在LinuxFramebuffer驱动之上的多层显示。它是一个用软件封装当前硬件无法支持的图形算法来完成硬件加速的层。DirectFB是为嵌入式系统而设计。它是以最小的资源开销来实现最高的硬件加速性能。
二. DirectFB移植准备
主机环境:32位Ubuntu 10.10
交叉编译工具:arm-linux-gcc-4.5.1
下载地址:?name=arm-linux-gcc-4.5.1-v6-vfp-20101103.tar.gz&can=2&q=
DirectFB版本:DirectFB-1.5.0.tar.gz
DirectFB测试用例版本:DirectFB-examples-1.5.2.tar.gz
下载地址:?path=Main%2FDownloads&page=1
DirectFB依赖库:freetype-2.4.4.tar.gz,jpegsrc.v8c.tar.gz,libpng-1.2.44.tar.gz,zlib-1.2.5.tar.gz
freetype-2.4.4.tar.gz、jpegsrc.v8c.tar.gz、libpng-1.2.44.tar.gz、zlib-1.2.5.tar.gz 下载地址:
用户名与密码都是
具体下载目录在 /pub/2011/09/03/DirectFB-1.5.0移植 支持3D硬件支持/
三. DirectFB移植步骤
环境变量配置:
export PREFIX=/usr
export DEST_DIR=/home //以上两个环境变量的是移植后库生成的位置,最好是把以后有提到的库都存放到/home目录下
export PATH=$PATH:/home/opt/FriendlyARM/toolschain/4.5.1/bin
export CC=arm-none-linux-gnueabi-gcc
export LDFLAGS=-L$DEST_DIR$PREFIX/lib
export CFLAGS="-g -I$DEST_DIR$PREFIX/include"
export PKG_CONFIG_PATH=$DEST_DIR$PREFIX/lib/pkgconfig
export FREETYPE_CFLAGS="-I${DEST_DIR}${PREFIX}/include/freetype2 -I${DEST_DIR}${PREFIX}/include"
export PKG_CONFIG_PATH=${DEST_DIR}${PREFIX}/lib/pkgconfig
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_PATH
export CFLAGS="-I${DEST_DIR}${PREFIX}/include/"
export LDFLAGS="-L${DEST_DIR}${PREFIX}/lib"
export LIBPNG_CFLAGS="-I${DEST_DIR}${PREFIX}/include/libpng12"
export LIBPNG_LIBS="-L${DEST_DIR}${PREFIX}/lib -lpng12"
export FREETYPE_CFLAGS="-I${DEST_DIR}${PREFIX}/include/freetype2 -I${DEST_DIR}${PREFIX}/include"
export DIRECTFB_CFLAGS="-I${DEST_DIR}${PREFIX}/include/directfb -I${DEST_DIR}${PREFIX}/include"
export FREETYPE_LIBS="-L${DEST_DIR}${PREFIX}/lib -lfreetype"
移植步骤:
1.
#Make zlib
cd $ZLIB
./configure --prefix=$PREFIX
make
make DESTDIR=$DEST_DIR install
2.
cd $LIBPNG
./configure --prefix=$PREFIX --host=arm-none-linux-gnueabi
make
make DESTDIR=$DEST_DIR install
3.
cd $LIBJPEG
./configure --prefix=$PREFIX --host=arm-none-linux-gnueabi
make
make DESTDIR=$DEST_DIR install
4.
cd $FREETYPE
./configure --prefix=$PREFIX --host=arm-none-linux-gnueabi
make
make DESTDIR=$DEST_DIR install
5.
cd $DFB
./configure --host=arm-none-linux-gnueabi --prefix=$PREFIX --disable-x11 --with-gfxdrivers=none --enable-jpeg --enable-png --enable-freetype --with-inputdrivers=linuxinput
make
make DESTDIR=$DEST_DIR install
错误及解决办法:
1. ../../lib/direct/atomic.h:188:70: error: expected ',' or '...' before 'new'
解决办法:进入到atomic.h文件,把关键字 new 改成new_1等任意不是关键词。
2. ../../lib/direct/serial.h:112:14: error: invalid conversion from 'void*' to 'volatile int*'
../../lib/direct/serial.h:112:14: error: initializing argument 2 of 'int _D__atomic_add_return(int, volatile int*)'
解决办法:进入到atomic.h文件,把有这方面的调动, 通过强制转换把(void *) -> (volatile int *)
6.
cd $DFBEXAMPLE
./configure --prefix=$PREFIX --host=arm-none-linux-gnueabi
make
make DESTDIR=$DEST_DIR install
这样就完成了基本的DirectFB的移植,把/home/usr目录下的全部文件拷贝到开发板的/usr下,运行测试用例就知道成不成功了。
四. DirectFB的硬件加速配置