在Debian (etch)下安装DirectFB及XDirectFB(x86架构)
唐刚 2007.10.31
第一步,安装一些开发包
build-essential
libc6-dev
make
intltool
libtool
libfreetype6
libfreetype6-dev
libmpeg2-4
libmpeg2-4-dev
libjpeg62
libjpeg62-dev
libmpeg3
libmpeg3-dev
libpng3
libpng12-0
libpng12-dev
zlib1g
zlib1g-dev
linux-kernel-headers
libdrm-dev
xorg-dev ( This is important. This has most necessary headers for XDirectFB. )(注:我用的Fedora 8,不用装这个)
autoconf
automake
autoconf-archive
第二步:下载源代码包
DirectFB-1.0.1.tar.gz 或 DirectFB-1.1.0.tar.gz
DirectFB-examples-1.0.0.tar.gz
linux-fusion-7.0.1.tar.gz 或 linux-fusion-3.2.3.tar.gz
XDirectFB-2007-10-30-05-25-19-UTC.tar.gz(任何一个最新的snapshot都行)(注:这个在http://www.directfb.org/index.php?path=Development%2FSource+Code%2FSnapshots 可以下载到最新的。Downloads里面的那个实在旧的可以。)
xorg-server-1.1.1.tar.bz2
linux-2.6.18.5.tar.bz2(任一个较新的内核都行)(注:如果你使用的debian的话,执行apt-get install linux-sourece 即可获得你内核版本的源代码,当然你的内核要是用apt-get 安装的才行。)
第三步:编译fusion模块(注:fusion需要有内核源代码才能安装。实在装不上的话就顺便装个新内核吧,多花不了多长时间。)
重新编译linux内核文件
tar jxvf linux-2.6.18.5.tar.bz2
cd linux-2.6.18.5
然后,要执行内核的配置操作,而我们此时,并不需要完全编译内核,需要的只是内核编译过程中产生的一些模块支持中间文件,所以可以执行一些特殊的操作方式
make menuconfig
出现一个终端下的图形界面后,不用配置,直接保存,退出
make modules
这是一个较长的过程,这个过程中,可能会出现一些错误,然后中途停止了,这没关系,只要这个过程运行过一段时间过后,就会产生所需要的中间文件,(实际上可能是先产生模块支持中间配置文件,再真正地编译其它东西),不管是正常结束还是非正常中止,都执行下一步
make modules_install(注:这一步可以不用执行,在/lib/modules/正在使用的内核版本号/ 下新建两个符号连接build和source指向你的源代码目录即可。看看下面的KERNEL_BUILD和KERNEL_SOURCE。 )
这时,就会在系统中产生一个配置文件夹 /lib/modules/2.6.18.5/ 。注,2.6.18.5是此内核的版本号,不同版本此号不同。(可以看出,不同的版本库和头文件可以共存)
然后,开始处理fusion
tar xvf linux-fusion-7.01.tar.gz
cd linux-fusion-7.01
然后,直接
make
如果,提示有错误产生,那很可能是因为打不到所需文件,编辑一下Makefile,输入 nano Makefile,会呈现如下内容
KERNEL_VERSION = $(shell uname -r)
KERNEL_MODLIB = /lib/modules/$(KERNEL_VERSION)
KERNEL_BUILD = $(KERNEL_MODLIB)/build
KERNEL_SOURCE = $(KERNEL_MODLIB)/source
表示会获取系统当前版本号,然后根据这个版本号来找路径,可是,我们下载的linux内核源代码版本与我们正在使用的系统的版本号可能不同(也没必要同),所以就会提示说找不到指定路径中的文件。于是我们将上面改成如下
KERNEL_VERSION = 2.6.18.5
KERNEL_MODLIB = /lib/modules/$(KERNEL_VERSION)
KERNEL_BUILD = $(KERNEL_MODLIB)/build
KERNEL_SOURCE = $(KERNEL_MODLIB)/source
反正目的只有一个,让编译器找得到路径
然后执行
make
一般来说不会出错,然后执行
make install
将会在 /lib/modules/2.6.18.5/ 下建立一些文件,其中包括 /lib/modules/2.6.18.5/drivers/char/fusion/fusion.ko 文件,这就是模块文件
然后,根据同一目录中的README文件,执行如下操作
mkdir /dev/fusion
mknod /dev/fusion/0 c 250 0
mknod /dev/fusion/1 c 250 1
insmod /lib/modules/2.6.18.5/drivers/char/fusion/fusion.ko
如果在执行这一步时,提示说不能插入,那么,很有可能是因为编译fusion.ko文件的gcc版本与编译内核的gcc版本不一致(或有较大不一致),如果出错了,有两种办法
方法一是,把内核继续编完,并将内核替换成新的;完成后,再来插入。
方法二是,找到编译内核的那个版本的gcc,用这个版本的gcc来编译fusion.ko
不过,谢天谢地,我的插入一次成功,我用的是gcc-4.1,debian etch,都是最新的东东,还不错。
执行
ls /proc
看有没有
fusion
目录,有的话,就表示成功了。
第四步:编译 DirectFB
tar xvf DirectFB-1.1.0.tar.gz
cd DirectFB-1.1.0
./configure —prefix=/opt/dfbsystem —enable-multi (注:一定要使用--enable-multi)
这个配置检查过程中,可能会提示缺少某些文件,一般来说是缺少了某些库,缺哪些库就装哪些库,debian的好处就是要装哪些库,一个apt-get install就搞定,(甚至可能会down下一大堆库文件来),配置检查完成后,
make
make install
文件会安装在我们指定的路径 /opt/dfbsystem/下,由于我们指定的路径并不在系统默认的查找路径下,所以我们还要在~/.bashrc中添加如下几行
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/local/tools-trad/bin:/opt/dfbsystem/bin
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/opt/dfbsystem/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/opt/dfbsystem/lib
完成后,可以重启一次shell(exit然后重新登录)
为了测试刚才编译的DirectFB能不能正常运行,我们有必要编译一下example (注:这个example我就是编译不过。不过还好这个和Direcfb能否正常运行没什么关系,跳过去吧。)
tar xvf DirectFB-examples-1.0.0.tar.gz
cd DirectFB-examples-1.0.0
./configure —prefix=/opt/dfbsystem/
make
make install
如果在make时提示找不到***文件,那么肯定是.bashrc文件中的找寻路径没设好,回去检查一下,然后重新操作。
编完后,会在/opt/dfbsystem/bin下出现几个可执行文件,执行,会发现,只面有几个小程序挺好玩的,只要能正常运行,就说明DirectFB没问题!可以进入下一步工作
第四步:编译 XDirectFB
tar xvf XDirectFB-2007-10-30-05-25-19-UTC.tar.gz
tar jxvf xorg-server-1.1.1.tar.bz2
cd xorg-server-1.1.1
cp ../XDirectFB-2007-10-30-05-25-19-UTC/xorg-server-1.1.1-directfb.diff
patch -p1 < xorg-server-1.1.1-directfb.diff
cp -a ../XDirectFB-2007-10-30-05-25-19-UTC/programs/Xserver/hw/directfb hw/
autoreconf (注:看清楚了,这里是autoreconf NOT autoconf,瞎费了我半天劲。)
这步会执行较长的时间,而且中间可能还会有点小错误,根据提示,可能要输入 automake —add-missing 来更正(注:我是还来了个automake --add-missing才通过了。)
./configure —prefix=/opt/dfbsystem —disable-xorg —disable-dmx —disable-xvfb —disable-xprint
(注:我在configure时会遇到找不到xkbui等库。费了好大力气弄齐全了。下载libxkbui在http://www.paldo.org/index-section-packages-page-main-releaseid-99266.html。或者在www.google.cn 上搜索一下xkbui tar 可以找到。还有其它的库在yum中可以找到。)
make
make install
由于xorg相当大,所以编译会持续较长的时间,请耐心等待。编译完成后,会在 /opt/dfbsystem/bin 下出现一个可执行文件 XDirectFB
退出X Window系统,在控制台下执行
export DISPLAY=:0
XDirectFB &
(注:执行这步时可能会报错,如 Could not init font path element /usr/local/lib/X11/fonts/misc/,removing from list!
Fatal server error: could not open default font 'fixed' 等。出现这种问题的原因是系统的字体没有安装在该目录下,解决方法拷贝系统的字体
如/usr/share/fonts/X11下的全部字体到/usr/local/lib/X11/fonts下。如果这样还继续报错找不到font,请在字体目录下找到fonts.alias文件,将任意
一个字体名字改为报错的字体名即可。另,对TTF好像没有fonts.alias。)
xfce4-session &
就进入了基于DirectFB下的xfce啦,好好玩一把!!!
附:到这里进入了基于DirectFB下的xfce,但是可能并没有DirectFB的透明特效,没关系,做点小修改。