交叉编译DirectFB在arm Linux平台上
最近移植SDL,发现SDL2已经不支持framebuffer了、SDL2比SDL新增了更多的特性。SDL1.2版本已经弃用,不再发布更新了。SDL1.2.15移植到zynq上,已经成功运行。
想尝试SDL2的更多特性,自然需要有一个中间层,如X11,wayland,DirecFB等。许多小游戏都是基于SDL2开发的。
SDL版本在Linux平台上对图形库的支持
|
Name |
Description |
1.2 |
2.0 |
|
x11 |
(default) Use the X11 windowing system |
yes |
yes |
|
dga |
Use XFree86 DGA 2.0 for fullscreen hardware acceleration |
yes |
|
|
fbcon |
Use the framebuffer console |
yes |
|
|
directfb |
Use the DirectFB API |
yes |
yes |
|
svgalib |
Use the SVGAlib API |
yes |
|
|
ggi |
Use the General Graphics Interface API |
yes |
|
|
aalib |
Use the Ascii Art library |
yes |
|
|
wayland |
Use Wayland protocol for hardware acceleration |
yes |
DirectFB简介
DirectFB是一个轻量级的提供硬件图形加速,输入设备处理和抽象的图形库,它集成了支持半透明的视窗系统以及在LinuxFramebuffer驱动之上的多层显示。它是一个用软件封装当前硬件无法支持的图形算法来完成硬件加速的层。DirectFB是为嵌入式系统而设计。它是以最小的资源开销来实现最高的硬件加速性能。
移植步骤
编译directFB相比较而言更简单,所以就开始动手交叉编译directfb到我的arm Linux平台,步骤如下:
1. 下载 DirectFB-1.7.7.tar.gz
2. 解压缩 tar xvzf DirectFB-1.7.7.tar.gz
3. 交叉编译依赖库
我们这里用到以下几个库,交叉编译后,将他们都make install到一样的目录,方便后面统一上传到目标板。
zlib-1.2.11.tar.gz
jpegsrc.v9d.tar.gz
libpng-1.6.37.tar.gz
tiff-4.3.0.tar.gz
freetype-2.10.4.tar.xz
基本上没什么难度,如果遇到问题,可以在评论区提问
4. 交叉编译DirectFB-1.7.7
DirectFB的编译需要flux工具
https://github.com/deniskropp/flux.git
下载后直接编译安装到Ubuntu中,我们实际上只需要编译出来的可执行文件fluxcomp
执行配置
./autogen.sh
./configure --help #根据提示配置需要的库文件路径
注意
freetype如果依赖png,则FREETYPE_LIBS后面需要添加-lpng
png如果依赖zlib,则LIBPNG_LIBS后面需要添加-lz
5. 交叉编译DirectFB-example-1.7
git clone --depth=1 https://github.com/atishnazir-youview/DirectFB-examples.git
cd DirectFB-examples
//配置
./configure --host=arm-linux-gnueabihf
CC=arm-linux-gnueabihf-gcc
--prefix=$PREFIX
DIRECTFB_CFLAGS="-I$PREFIX/include/directfb"
DIRECFB_LIBS="-L$PREFIX/lib"
CPPFLAGS=-I$PREFIX/include
LIBS="-L$PREFIX/lib"
//编译安装
make && make install
6.上传到目标开发板.
运行出错相关
- 运行出错 DirectFB/core/system:No system found
根据自己上传的目录配置相应的环境变量
export LD_LIBRARY_PATH=/usr/lib
export DFBARGS=module-dir=/usr/lib/dirctfb-1.7-7
在移植过程中有问题在下方留言!!!


