网上关于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 下的程序只能在终端上运行,不能在图形用户界面下运行。
这种情况的话可以试一下在终端下试一下。