安装xorg及XDirectFB

    技术2025-04-26  17

    原文地址:http://xenyinzen.wikidot.com/tools-usage:compile-directfb

    在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)/buildKERNEL_SOURCE = $(KERNEL_MODLIB)/source

    表示会获取系统当前版本号,然后根据这个版本号来找路径,可是,我们下载的linux内核源代码版本与我们正在使用的系统的版本号可能不同(也没必要同),所以就会提示说找不到指定路径中的文件。于是我们将上面改成如下

    KERNEL_VERSION = 2.6.18.5KERNEL_MODLIB = /lib/modules/$(KERNEL_VERSION)KERNEL_BUILD = $(KERNEL_MODLIB)/buildKERNEL_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/fusionmknod /dev/fusion/0 c 250 0mknod /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.gzcd DirectFB-1.1.0

    ./configure —prefix=/opt/dfbsystem —enable-multi (注:一定要使用--enable-multi

    这个配置检查过程中,可能会提示缺少某些文件,一般来说是缺少了某些库,缺哪些库就装哪些库,debian的好处就是要装哪些库,一个apt-get install就搞定,(甚至可能会down下一大堆库文件来),配置检查完成后,

    makemake 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/pkgconfigexport 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.gzcd DirectFB-examples-1.0.0

    ./configure —prefix=/opt/dfbsystem/makemake 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的透明特效,没关系,做点小修改。

    将以下内容保存,命名为startxdfb。   #!/bin/bash   export DISPLAY=:0   #/usr/X11R6/bin/ 是XDirectFB的命令路径,请酌情修改.请参考http://www.linuxsir.org/bbs/showthread.php?s=&threadid=100618 /usr/X11R6/bin/XDirectFB -enableRoot -dpi 96 -enableFadeIn -enableFadeOut -defaultOpacity 195 -unfocusedOpacity 125 -enableUnfocused +kb -a 0 -c -br &   #开启XFCE4桌面,如果使用gnome桌面请使用 gnome-session & xfce4-session &   执行一下,看看效果如何。    Good Luck! ^_^
    最新回复(0)