在Ubuntu9.10下安装DirectFB-1.0.1以及运行DFB程序时遇到的问题及解决方法

来源:互联网 发布:刻相片礼物淘宝 编辑:程序博客网 时间:2024/05/18 02:13

      最近在PC上装了虚拟机软件VMware7.0,并建立了一个运行Ubuntu9.10的虚拟机,目的是用作DirectFB程序的开发调试,于是第一步便是在Ubuntu9.10上安装DirectFB,这里采用的是DirectFB-1.0.1,下面简单记录一下DirectFB的安装过程,以后日后翻看。

   

      在Linux下安装一个软件的步骤一般是:下载软件包(如DirectFB-1.0.1.tar.gz)、解压(tar -xzf)、配置(./configure)、

编译(make)、安装(make install)。

 

一. 下载软件包(略)

 

二. 解压。

     将下载的软件包解压到某个目录下,如将软件包解压到目录/home/jack/:tar -xzf DirectFB-1.0.1.tar.gz。

 

三. 配置。

     进入解压后软件包的目录:cd /home/jack/DirectFB-1.0.1;

     运行该目录下的脚本程序:./configure

 

     运行过程中,可能会看到提示,说缺少一些DFB程序运行必须的库,如libjpeg、libpng、freetype、zlib等库。其实DFB程序的运行需要哪些库,这个在DFB软件包的README文件中有详细的说明

DirectFB-1.0.1/README:

...........................................................................

Build Requirements
------------------

   - Linux kernel 2.2.x or newer with working frame buffer device
     (check /proc/fb) for the fbdev system.
   - Optionally SDL (Simple Direct Media Layer) for the sdl system.

   - freetype (version >= 2.0.1)
   - libjpeg62
   - libpng2 or libpng3
   - zlib

.............................................................................

 

 

    因此,必须要下载并安装这些库,其实这倒挺简单,在Ubuntu下可用命令apt-get install来方便地完成:

    #apt-get install freetype6-dev

    #apt-get install libjpeg-dev

    #apt-get install zlib1g-dev

    #apt-get install libpng-dev

    需要注意的是这些库的名字,最好先参看一下DFB目录下的README文件。

    这样,完成了这些库的安装后再重新运行配置脚本:#./configure

如无意外的话,这次就成功配置好了,接下来可以编译了。

 

四. 编译

     依然在目录DirectFB-1.0.1下,直接:#make即可。

在编译过程中有可能出现编译错误,如我遇到的是:编译提示一些关于X11文件的编译错误,经分析,这是应为缺少X11相关的库,于是下载:#apt-get install  libx11-dev

      #apt-get install  libxext-dev

这样安装完成后再次编译:make,果然这次顺利编译通过。编译完成后就可以安装了。

 

五. 安装

     依然在目录DirectFB-1.0.1下,直接:#make install

ok,没问题,安装成功。

 

六. 运行 

     同样的方法可以下载安装DFB的例子程序。安装完成后可以运行一下,结果可能会出现问题:找不到idirectfb.1.0.1.so.0这个库。

经分析,这是由于程序运行时无法加载该动态链接库:找不到这个库,可通过如下两个方法来解决:

(1)设置环境变量:#export LD_LIBRARY_PATH=/usr/local/lib/  (DFB库所在的目录)

(2)修改配置文件/etc/ld.so.conf:在该文件最后加上一句:

     /usr/local/lib/

     保存退出。然后执行目录/etc/下的命令:#ldconfig

注意:方法一的设置环境变量在每次开机后都必须重新设,也就是不会保存。

      方法二则在下次开机后就不必再次设置了。

 

    然后再次运行例子程序,这次程序顺利地按照所设置的路径找到了必要的库,但程序运行过程中却出现了另一个问题:

    Opening /dev/fb0 and /dev/fb/0 failed--àno such file or directory

显然,该问题由于没有找到framebuffer设备而引起的,这该怎么解决呢,网上找了许久也没发现针对Ubuntu9.10的解决方法,经过向同事请教,得知还有这样一个方法,不用framebuffer:

    首先,Ubuntu必须运行在图形模式下(而不是字符模式)。

    其次,在当前用户的主目录下(如以root身份登录的则是/root/)建立一个文件:.directfbrc,然后将如

               下内容添加到该文件中:         

       最后,保存退出,这下再运行程序就可以看到程序正常运行了!     

 

        mode=1024x768

        wm=default

        depth=32

        system=x11

 

注:编译DFB程序的方法类似于:

gcc -I/usr/local/include -I/usr/local/include/directfb -I/usr/local/include/directfb-internal -L/usr/local/lib -ldirectfb -lpthread -ldl -lz test.c -o test

原创粉丝点击