最近在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