1.5.0移植 支持3D硬件支持

一.  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

下载地址:?path=Main%2FDownloads

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的硬件加速配置

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23477.html