交叉编译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

在移植过程中有问题在下方留言!!!

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...