Ubuntu下 DirectFB的编译安装

来源:互联网 发布:手机跟踪定位器软件 编辑:程序博客网 时间:2024/06/15 18:35

Ubuntu下 DirectFB的编译安装

默认分类 2010-04-23 00:27:00 阅读3 评论1   字号: 订阅

Ubuntu下 DirectFB的编译安装

DirectFB和样例的源代码可以到 DirectFB.org下载

整个步骤依次为:

1、切换到目录/home/下,将两个包解压:

    tar -xzf DirectFB-1.4.3.tar.gz
    tar -xzf DirectFB-examples-1.2.0.tar.gz

2、安装DirectFB-1.4.3,依次输入下列命令

cd DirectFB-1.4.3
./configure --enable-osx=no --enable-x11=yes --enable-zlib=yes --enable-sdl=yes --enable-freetype=yes  --with-tests

      注:如果在./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!

        解决的方法可以参考:
            输入命令
                apt-cache search libpng
                apt-cache search libjpeg
                apt-cache search libfreetype
            依次安装找到的文件。
            例如:

                 查找关于png方面的包:apt-cache search libpng
                 安装查找的相关包    :apt-get install cl-png libglpng-dev libimage-size-ruby1.8 libpng3-dev等待。
make

make install

3. 设置环境变量:

a) export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig (directfb默认被安装到/usr/local/lib/)
(这样只能在当前终端可以运行,关机后还得自已运行些命令,才能运行dfb程序,如要永久性加入可这样:
如你用的是root用户,可以vi /root/.bashrc中加入:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

b)指定directfb的库目录:
    vi /etc/ld.so.conf在最后一行加入:/usr/local/lib,保存退出。
    ldconfig
c).vi /boot/grub/menu.lst在kernel后面加上vga=0x0317(分辨率1024*768)或者vga=788(分辨率 800*600)把frambuffer启动,如:

#****************start*************#
title           Ubuntu, kernel 2.6.17-10-generic
root            (hd0,6)
kernel          /vmlinuz-2.6.17-10-generic root=/dev/sda8 ro quiet splash locale=zh_CN vga=0x0317
initrd          /initrd.img-2.6.17-10-generic
quiet
savedefault
boot
#****************stop**************#

4、安装DirectFB-examples-1.2.0

tar xf  DirectFB-examples-1.2.0.tar.gz

cd DirectFB-examples-1.2.0

./configure

make && make install

h).重启计算机。

4、测试例子

打开终端,或者Ctrl+Alt+F1进入命令行模式

df_andi

可以出现画面,但是颜色不正常,经过分析确认是显示器颜色深度和directfb颜色深度设置不一致导致,因为menu.lst中vga=0x317表示1024x768,16bpp。开始以为怀疑是/etc/X11/xorg.conf中配置的问题,将该文件中

Section "Screen"
        Identifier "Default Screen"
        Device     "Configured Video Device"
        Monitor    "Configured Monitor"
        DefaultDepth     24 (改成16,重启后问题依旧)
EndSection

后来将vga=0x317改成vga=0x323,重启并在此运行测试程序df_andi时,提示在fb.mode中找不到对应的mode,于是分析文件/etc/fb.modes。发现里面没有颜色深度是16bpp的时序,除了几个32bpp的时序之外都是8bpp的时序,但这几个32bpp的时序是

1280x1024,1600x1280等,这几个时序我电脑上的framebuffer并不支持,遥控电脑显卡framebuffer的支持的时序可以通过命令hwinfo --framebuffer查看。于是要想办法完fb.modes中增加16bpp和framebuffer支持的32bpp的时序,在网上google半天没有找到办法。于是直接将该文件删掉看系统是否能够重新生成一个。mv fb.modes fb.modes-bak 重启之后发现并没有重新生成该文件,但是在进行df_andi测试,发现已经可以了。到现在经过测试16bpp和32bpp都是可以的,所以小结一下。不过现在想了一下,按照vesa2.0中定义的时序标准网fb.modes中添加对应的时序应该也是可以的,不过删掉fb.modes是最简单的办法了。可能directfb在没有该文件的情况下去检查framebuffer支持的参数,而有该文件时,只检查fb.modes里面的参数而不去检查framebuffer的参数,所以开始会有问题。

 

另:如果想不让你的directfb应用程序不在全屏显示,不使用fbdev引擎而改成SDL时,可以创建并修改/etc/directfbrc文件,关于此文件,稍后再给出。
上面过程中可能出现framebuffer没有启动的问题,需要在Ubuntu中配置以让其启动framebuffer支持,参考以下方法
7.10默认屏蔽了framebuffer模开,所以无法在gurb参数上加 vga=xxx来启用frame buffer.
解决解决方法:
首先,编辑你的 /etc/initramfs-tools/modules 文件
加入如下三行内容
fbcon
vesafb
vga16fb

最重要的一步,要把文件/etc/modprobe.d/blacklist-framebuffer里面的vesafb和vga16fb这两行给注释掉。
这样你就可以在内核后面加入vga=xxx这样的启动参数了。

最好用hwinfo --framebuffer先看一下显卡支持的vga数值
sudo hwinfo --framebuffer
引用:
02: None 00.0: 11001 VESA Framebuffer
[Created at bios.447]
Unique ID: rdCR.il6towt04X5
Hardware Class: framebuffer
Model: "Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS Intel(r) 82945GM Chipset Family Graphics Controller"
Vendor: "Intel Corporation"
Device: "Intel(r) 82945GM Chipset Family Graphics Controller"
SubVendor: "Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS"
SubDevice:
Revision: "Hardware Version 0.0"
Memory Size: 7 MB + 704 kB
Memory Range: 0xd0000000-0xd07affff (rw)
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+832), 8 bits
Mode 0x0311: 640x480 (+1280), 16 bits

Mode 0x0323: 1024x768 (+4096), 24 bits


Config Status: cfg=new, avail=yes, need=no, active=unknown
在内核后面加入了 vga=0x0317,是1024x768的16位色。

最后刷新一下
代码:
sudo update-initramfs -u
重启