ubuntu 下测试directfb

来源:互联网 发布:域名的商业价值 编辑:程序博客网 时间:2024/05/18 06:10

编译命令

gcc -D_REENTRANT -I/usr/local/include/directfb   -D_GNU_SOURCE -Wall -O3 -pipe  -Werror-implicit-function-declaration   a.c -L/usr/local/lib -ldirectfb -lfusion -ldirect -lpthread   -lm

直接sample时必须sudo来执行




DFB 环境搭建总结 ubuntu 10.04 DirectFB1.0.0

分类: DFB 2010-12-21 14:36462人阅读 评论(0)收藏 举报

网上关于DFB在ubuntu下安装的教程很多,以下只是总结一下,在10.04系统下遇到过的问题,供以后参考

 

一。首先安装好dfb开发包

下载DirectFB-0.9.24.tar.gz源码开发包,下载地址为:http://www.directfb.org/index.php?path=Main%2FDownloads&page=4

下载测试用例DirectFB-examples-0.9.23.tar.gz:源码包,下载地址为:

http://www.directfb.org/index.php?path=Main%2FDownloads&page=4

 

二。找一个简单的DFB程序编译一下(一系列问题由此开始出现)


#include <directfb.h>

IDirectFB  *dfb;
IDirectFBSurface *primary;
IDirectFBImageProvider *provider;
DFBSurfaceDescription dsc;

int main(int argc, char *argv[])
{
        DirectFBInit(&argc, &argv);
        DirectFBCreate(&dfb);

        dfb->SetCooperativeLevel(dfb, DFSCL_FULLSCREEN);
        memset(&dsc, 0, sizeof(DFBSurfaceDescription));
        dsc.flags = DSDESC_CAPS;;
        dsc.caps = DSCAPS_PRIMARY;
        dfb->CreateSurface(dfb, &dsc, &primary);
        dfb->CreateImageProvider(dfb, "dfbTest.jpg", &provider);
        provider->RenderTo(provider, primary, (void*)0);
        provider->Release(provider);
        sleep(5);
        primary->Release(primary);
        dfb->Release(dfb);
}

 

写好代码后按照通常的方法开始编译:gcc -o directfb directfb_test.c

 

问题一: 找不到directfb.h 头文件

解决方法,去/usr/local/include/目录下查看了下 原来directfb 相关的头文件在directfb文件目录下,

所以修改代码为: #include <directfb/directfb.h> 

OK 接着刚才的方式编译

 

问题二:会出现类似 在directfb.h中 找不到dfb_types.h 等 头文件

解决方法 与问题一类似 一一处理 例如: #include <directfb/dfb_types.h>

OK 接着编译

 

问题三:编译提示undefined reference to 'DirectFBInit' 等之类的错误提示

原因是编译链接的时候没有找到相关库文件,解决方法:gcc -L/usr/local/lib -l directfb -g -o directfb directfb_test.c 接着编译

 

问题三:类似与 error while loading shared libraries:libdirectfb-1.0.0.so.0 cannot open shared object file : No such file or directory

解决方法:把/usr/local/lib 添加到环境变量中去  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

OK 接着编译

 

问题四: 出现错误信息如下:

...........

DirectFB/Core:Could not initialize 'system_core' core!-->Initialization error!

........

 

处理方法:打开系统的framebuffer

操作步骤如下:

1。编辑/etc/initramfs-tools/modules  在其中加入:

fbcon

vesafb

vga16fb

 

2.编辑/etc/modprobe.d/blacklist-framebuffer.conf

注释掉blacklist    vesafb

 

3.修改/boot/grub/grub.cfg  (Ubuntu 10.04默认使用grub2 所以需要安装一下grub  #update-grub )

在 root=UUID=XXXXXXXXXXX   quiet splash 后加入 vga=0x317

说明:vga=0xx314 即为 800*600 16位

 

5.reboot 重启动系统

 

6.判断buffer是否启用

首先确认内核是否支持 buffer ,查看/proc/fb 文件是否存在,存在说明支持。其次看看buffer设备是否已激活,

若/dev/fb0文件存在,则说明已激活。

 

7 安装 zhcon显示中文

#apt-get install zhcon

在 /etc/bash.bashrc里面加入 alias zhcon='zhcon --utf8 --drv=fb' 

启动zhcon:   #zhcon --utf8 --drv-fb

 

 

到现在为止编译算是告以段落了,但是还是不能运行编译后的程序,

因为有些系统Frambuffer 下的程序只能在终端上运行,不能在图形用户界面下运行。

这种情况的话可以试一下在终端下试一下。