1、下载源码
(1)下载DirectFB源码
http://www.directfb.org/index.php?path=Main%2FDownloads
DirectFB-1.3.0.tar.gz
DirectFB-examples-1.2.0.tar.gz
2.解压
将压缩文件copy到任意目录下解压(这里copy到~/目录下)
tar -xzf DirectFB-1.3.0.tar.gz
tar -xzf DirectFB-examples-1.2.0.tar.gz
3.安装DirectFB-1.3.0,依次输入下列命令
cd DirectFB-1.3.0
./configure
sudo make
sudo make install
注:如果在./configure这步出现下面的提示:
PNG support is missing - many applications won't work correctly!
JPEG support is missing - many applications won't work correctly!
FreeType2 support is missing - many applications won't work correctly!
解决的方法可以参考:
sudo apt-cache search libpng
sudo apt-get install libpng12-dev
sudo apt-cache search libjpeg
sudo apt-get install libjpeg62-dev
sudo apt-cache search freetype
sudo apt-get install libfreetype6-dev
again "./configure,sudo make, sudo make install"
3、安装DirectFB-examples-1.2.0
a).(1)sudo vim /boot/grub/grub.cfg在linux后面加上vga=0x0341(分辨率1024*768)或者vga=788(分辨率800*600)把
frambuffer启动,如:
#****************start*************#
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-24-generic' --class ubuntu --class gnu-linux --class gnu --class os
{
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 24ba3505-cc92-48be-8455-f5753696f941
linux /boot/vmlinuz-2.6.32-24-generic root=UUID=24ba3505-cc92-48be-8455-f5753696f941 ro
crashkernel=384M-2G:64M,2G-:128M quiet splash vga=0x0341
initrd /boot/initrd.img-2.6.32-24-generic
}
#****************stop**************#
a).(2) sudo vim /etc/initramfs-tools/modules 文件加入如下三行内容
fbcon
vesafb
vga16fb
a).(3)要把文件/etc/modprobe.d/blacklist-framebuffer里面的blacklist vesafb和vga16fb这两行给注释掉。这样你
就可以在内核后面加入vga=xxx这样的启动参数了。
最好用hwinfo --framebuffer先看一下显卡支持的vga数值
sudo hwinfo --framebuffer
b).updatedb #更新数据库
c).locate directfb.pc
找到directfb.pc的路径,例如我的是这样的:
/usr/lib/pkgconfig/directfb.pc
/usr/lib/pkgconfig/cairo-directfb.pc
/usr/local/lib/pkgconfig/directfb.pc
/data/soft/DirectFB-1.1.0/directfb.pc.in
/data/soft/DirectFB-1.1.0/directfb.pc
d).接着设置环境,将第3步得到的pkgconfig库目录加入环境之中:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
(这样只能在当前终端可以运行,关机后还得自已运行些命令,才能运行dfb程序,如要永久性加入可这样:
如你用的是root用户,可以vi /root/.profile中加入:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig )
e).sudo make
f).sudo make install
(注:若在sudo make时报错:x11什么的找不到文件等那就是说明当前的ubuntu系统还缺少一些支持包应该用apt-get
install 安装缺少的支持包)
g).将指定directfb的库目录:
sudo vim /etc/ld.so.conf在最后一行加入:/usr/local/lib,保存退出。
ldconfig
(注:或者在终端中输入:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
ldconfig)
h).重启计算机。 如果不重启,我的机子出现下面的错误:
(*) DirectFB/Core: Single Application Core. (2007-10-22 15:48)
(!) Direct/Util: opening '/dev/fb0' failed
--> No such device
(!) DirectFB/FBDev: Error opening framebuffer device!
(!) DirectFB/FBDev: Use 'fbdev' option or set FRAMEBUFFER environment variable.
(!) DirectFB/Core: Could not initialize 'system_core' core!
--> Initialization error!
df_andi.c <462>:
(#) DirectFBError [DirectFBCreate( &dfb )]: Initialization error!
4、测试例子,cd DirectFB-examples-1.2.0/src/ 下,运行:
./df_andi
{
注:./df_andi这里应该出现企鹅的画面,但是似乎报错了,很多错误,包括什么初始化错误等。原因是我们没有配置
system和mode等参数,这就是在一开始说的关于x11的问题。
4.1 创建directfbrc文件
为什么要创建这个文件?是因为这个文件指定了运行directfb程序的参数。上一步报错的原因就是没设置好这些参数。
我们可以在$HOME下面创建一个.directfbrc文件,我这里是/home/kane/.directfbrc,创建好了之后运行程序会自动去
寻找这个这个配置文件。关于这个配置文件里面的参数说明可以参考这篇文章:
http://hi.baidu.com/weiliqun/blog/item/6f4ba4ebe601eee2cf1b3e57.html
我这里配置如下:
system=x11(fbdev始终报错,sdl不报错但是看不到效果)
mode=640x480(这个可以设成任意的,如果是用的x11的话,可以看到相应的不同的大小的窗口)
depth=16
pixelformat=RGB16(之前用RGB32结果x11的窗口一直闪烁)
关于fbdev,x11,sdl等介绍如下:
这部分代码在system目录下。这也是一个adapter层,主要对显示设备的抽象,有的也包括对输入事件的处理。其中包
括: fbdev: 输出到frame buffer device。 osx: 输出到mac os上。 vnc: 输出到Virtual Network Computing(
类似于微软远程桌面的一个协议)。 x11: 输出到X Window上,在0.9.24仍然有问题,建议使用SDL。 sdl: 输出到
Simple DirectMedia Layer。 4.2 效果展示
我运行的是examples里面src中的df_andi这个实例,可以看到很多企鹅在动,
}