红联Linux门户
Linux帮助

Linux系统PDA软件开发环境的构建

发布时间:2006-11-14 10:13:57来源:红联作者:download
为了构建一个Linux-PDA的开发环境,您需要以下前提:

(1) Linux内核支持Frame Buffer

此项需要是为使用DirectFB而准备的。

(2) 有一个可运行的Linux发行版本,支持chroot

此项是为运行Linux-PDA编译环境而准备的。

(3) Linux内核支持devfs(可选)

在最新版的2.4.x内核里有这一项,2.6内核也支持,不过改为obsolescent了,未来考虑改为udev

此项方便在编译环境中使用外部设备。

具体的构建步骤为:

1、从http://www.uclibc.org/downloads/下载最新版的root_fs_i386

网址(http://www.uclibc.org/downloads/)我使用的是25-Jul-2004版的,写作本文时最新版是03-Jan-2005,具体操作时可能会有一些差异,但安装过程应该大体一致。

2、chroot到解压后的root_fs中,以后的工作将在此环境中进行

如果需要下载,可以打开另一个控制台,在其下完成下载任务,然后复制到root_fs目录中。

3、下载perl-5.8.5源码,编译并安装

网址(http://www.cpan.org/src/stable.tar.gz)上述网址在本文写作时所对应的是perl-5.8.6版本,未测试,但应该不会有太大问题。请使用:$/bin/bash Configure -d -e -O -Uuseperlio以避免使用uclibc编译perl时的perlio错误。

4、下载pkgconfig-0.15.0源码,编译并安装

网址(http://www.freedesktop.org/softw ... onfig-0.15.0.tar.gz)

5、下载libiconv-1.9.2源码,编译并安装

网址(http://ftp.gnu.org/gnu/libiconv/libiconv-1.9.2.tar.gz)

6、下载gettext-0.13源码,编译并安装

网址(http://ftp.gnu.org/gnu/gettext/gettext-0.13.tar.gz)glib-2.4.8需要这个软件包,uclibc中有该软件包所提供的函数接口,不过还没有真正实现。

7、下载glib-2.4.8源码,编译并安装

网址(ftp://ftp.gtk.org/pub/gtk/v2.4/glib-2.4.8.tar.bz2)

8、下载expat-1.95.8源码,编译并安装

网址(http://sourceforge.net/projects/expat/)

9、下载freetype-2.1.4源码,编译并安装

网址(http://sourceforge.net/project/showfiles.php?group_id=3157)请不要使用更新版本的freetype-2,例如freetype-2.1.9,否则可能引起与fontconfig软件包的兼容性问题。

10、下载fontconfig-2.2.90源码,编译并安装

网址(http://freedesktop.org/software/ ... onfig-2.2.90.tar.gz)您可能需要将本地目录/usrs/share/fonts/下的内容复制到您的开发目录的$your_develop_dir/usr/share/fonts/下,以便让fontconfig正常运行。

11、下载pango-1.4.1源码,编译并安装

网址(ftp://ftp.gtk.org/pub/gtk/v2.4/pango-1.4.1.tar.bz2)

12、下载atk-1.6.1源码,编译并安装

网址(ftp://ftp.gtk.org/pub/gtk/v2.4/atk-1.6.1.tar.bz2)

13、下载libpng-1.2.7源码,编译并安装

网址(http://sourceforge.net/project/showfiles.php?group_id=5624)libpng1.2.7有两个版本,一个是支持configure的,一个是不支持的,按你自己的喜好选择吧。写本文时看到有关libpng安全性的一个警告(http://www.libpng.org/pub/png/libpng.html)请尝试使用libpng-1.2.8编译并安装。

14、下载jpeg-6b源码,编译并安装

网址(ftp://ftp.gtk.org/pub/gtk/v2.4/dependencies/jpegsrc.v6b.tar.gz)

15、下载tiff-v3.6.1源码,编译并安装

网址(ftp://ftp.gtk.org/pub/gtk/v2.4/dependencies/tiff-v3.6.1.tar.gz)

16、下载libtool-1.5.10源码,编译并安装

网址(http://ftp.gnu.org/gnu/libtool/libtool-1.5.10.tar.gz)在安装DirectFB软件包是需要用到libtool。
文章评论

共有 3 条评论

  1. download 于 2006-11-14 10:15:19发表:

    该系统构架用DirectFB取代了X window system,将原有的GPE系统中与X window system交织在一块的部分分离出来,提高了各模块的聚合度,并将模块间的相互耦合的可能减小了。在获得硬件抽象的同时也得到了硬件加速的支持(这个有赖于DirectFB的实现)其实这个趋势从GTK的发展计划也可以看到,现在GTK将不仅仅是构建在X window system上的ToolKit了,更有可能成为GUI抽象接口,通过GDK层来抹平底层不同windowing system的区别,为应用程序开发人员提供统一的接口。当然,如果要用到底层windowing system的特性,或许还要直接访问底层windowing system的api,但是,只要GDK做得足够好,这些都是可以解决的。

    未来的工作:

    1、将现有的GPE应用程序移植到上述软件构架下。

    2、参与GPE项目未实现的功能开发。

    3、精简最终代码长度,实现将最终的基本系统放入8M/16M flash中。

    《Linux-PDA软件开发环境的构建》一文或许让大家看得迷迷糊糊的,有句古话说,"一个例子胜过一千遍的说教"(古代的老外说的,翻译过来大概意思是这样子的;-))好了,今天就让我们来正式体验一下这个软件开发环境吧。首先,说说我的系统环境吧

    我的系统是Red Hat 9,运行在vmWare4.5.2上,cpu是Intel P4-2.4的如果您使用的AMD的cpu,附件中提供的内核可能不适合您。您需要一个支持Frame Buffer和devfs的Linux内核,如果您还没有或者不想自己动手编译一个,请下载附件中的boot.tar.bz2解压到/boot目录下,如果您的引导程序使用的是GRUB,请在其中加入类似下文的一段title:


    title Red Hat Linux (2.4.27-fb)
    root (hd0,6)
    kernel /vmlinuz-2.4.27-fb root=/dev/hda8 devfs=mount vga=785
    initrd /initrd-2.4.27-fb.img


    请注意在kernel后加入参数 devfs=mount vga=785 devfs=mount表示内核使用devfs vga=785表示使用VESA Frame Buffer的VGA 640x480x64k色的模式。

    请参看下表


    # VESA framebuffer console @ 1024x768x64k
    vga = 791
    # Normal VGA console
    # vga = normal
    # VESA framebuffer console @ 1024x768x64k
    # vga=791
    # VESA framebuffer console @ 1024x768x32k
    # vga=790
    # VESA framebuffer console @ 1024x768x256
    # vga=773
    # VESA framebuffer console @ 800x600x64k
    # vga=788
    # VESA framebuffer console @ 800x600x32k
    # vga=787
    # VESA framebuffer console @ 800x600x256
    # vga=771
    # VESA framebuffer console @ 640x480x64k
    # vga=785
    # VESA framebuffer console @ 640x480x32k
    # vga=784
    # VESA framebuffer console @ 640x480x256
    # vga=769


    如果您使用lilo,请查阅相关资料。如果您使用的是Red Hat发行版本,Red Hat已经为您做好有关devfs的一些配置了,如果是其它发行版本,请查阅相关资料。好了,假设您已经用新的内核成功启动并进入系统了,下边让我们来试试这个Linux-PDA的软件环境吧。请下载附件中的developroot.tar.bz2,并解压,假设您使用root用户工作:


    # tar jvxf developroot.tar.bz2
    # chroot developroot


    进入Linux-PDA软件环境


    #./initroot.sh


    挂接上devfs和proc准备好运行环境.接下来可以试试gtk-demo了,


    #killall gpm


    关掉gpm进程:


    #gtk-demo


    这时您可以看到gtk-demo中的各种widget列表,一个个试试吧。好了,使用重启大法吧。如前的操作进入到Linux-PDA软件环境:


    #chroot developroot
    #./initroot.sh
    #killall gpm
    #gpe-clock


    您可以看到在屏幕的左上方有一个小时钟,点击它,会弹出一个菜单,看看各个选项吧,最后选择"remove from panel"退出程序。如果您对这样的环境感兴趣,想了解是如何构造的,请下载附件中的root.tar.bz2,并在开发环境的根目录下(即/目录)解压,root.tar.bz2文件的内容将解到/root目录中,您将看到您的开发环境中的/root目录下多了一些目录,这些目录的作用和功能,以及相应的软件包如何编译、安装请参阅《Linux-PDA软件开发环境的构建》一文。是不是觉得没什么难的?呵呵,其实Linux就是这样简单,一起来玩吧。

  2. download 于 2006-11-14 10:14:48发表:

    24、首先来试试GTK自带的demo程序

    如果您刚才是在X window system(或者桌面环境下)工作,请先退出X window,回到控制台状态。

    在运行gtk-demo前,请将gpm关闭,因为gpm与DirectFB产生冲突,致使鼠标不能正常工作。

    警告!!!作者至今还没有找到在640x480模式下如何退出gtk-demo的办法,每次运行后,都使用另外一个控制台重启机器:p运行gtk-demo后您可以尝试着打开各种widget,试验完后重启机器。好了,现在可以试试GPE了,有关GPE的详细资料请浏览(http://gpe.handhelds.org/)

    25、下载SQLite-2.8.15源码,编译并运行

    网址(http://www.sqlite.org/sqlite-2.8.15.tar.gz)GPE使用SQLite作为数据管理工具,已做的试验中还没有用到该软件包,但是还是先装上吧。

    26、下载gpe-icon-0.24并安装

    网址(ftp://gpe.handhelds.org/projects/gpe/source/gpe-icons-0.24.tar.gz)

    27、下载libschedule-0.13源码,编译并安装

    网址(ftp://gpe.handhelds.org/projects ... chedule-0.13.tar.gz)

    28、下载libgpewidget-0.95,作为参考

    网址(ftp://gpe.handhelds.org/projects ... ewidget-0.95.tar.gz)本文写作时libgpewidget已经发布0.97版本了,本文作者是基于libgpewidget-0.95进行修改,使其可以在GTK/DirectFB下运行。

    修改的主要工作是将原libgpewidget中的Xlib函数用GDK中的函数替换,因为只是想验证可行性,修改比较简单,存在很多bug,使用者请小心,请下载本文附录文件,解压并安装libgpewidget-0.95-dfb。

    29、下载gpe-clock-0.9,作为参考

    网址(ftp://gpe.handhelds.org/projects/gpe/source/gpe-clock-0.9.tar.gz)我们将尝试修改gpe-clock使其运行在GTK/DirectFB下,作为GPE的试验。请下载本文附录文件,解压并安装gpe-clock-0.9-dfb

    30、运行gpe-clock,然后退出(如果不能退出请使用前述的重启大法)

    您会看到在屏幕左上角有一个小时钟在运行,当然在Familiar发布版本里,它是在右下角的工具条上的。

    通过上述步骤可以看到一个结构划分比较清晰的PDA软件系统已经构造出来了,其基本框架如下图所示:


    +----------------------------------------------+
    | Application/GPE |
    +--------------------------+-------------------+
    | GTK | other libs |
    +--------------+-----------+ libpng |
    | GDK/DirectFB | | libjpeg |
    +--------------+ pango/ATK | libtiff |
    | Glib | | ...... |
    +--------------+-----------+-------------------|
    | uclibc |
    +----------------------------------------------+
    | DirectFB/Linux-kernel-fb |
    +----------------------------------------------+

  3. download 于 2006-11-14 10:14:17发表:

    17、下载DirectFB-0.9.21源码,编译并安装

    网址(http://www.directfb.org/downloads/Core/DirectFB-0.9.21.tar.gz)运行autogen.sh自动产生配置文件并做第一次默认编译,以后再编译的时候不需要运行autogen.sh,可以直接使用configure来配置。

    18、从www.directfb.org的cvs服务器上co最新版的gdk-directfb

    仔细阅读README。

    19、下载gtk+-2.4.14源码,解压

    网址(ftp://ftp.gtk.org/pub/gtk/v2.4/gtk+-2.4.14.tar.bz2)假设您解压到/root/gtk+-2.4.14/目录下。

    20、安装gdk-directfb的README所述将,gdk-directfb移到/root/gtk+-2.4.14/gdk/目录下,并改名为directfb。您会发现在/root/gtk-2.4.14/gdk/目录下,有x11、win32、linux-fb和directfb四个目录,这些都是gtk的图形接口bankend。我们将只用到directfb,但是可以参考其他目录,特别是linux-fb目录的内容。

    21、回到/root/gtk-2.4.14/目录下,并执行patch动作:


    $cd /root/gtk-2.4.14/
    $patch -Np0 -i gdk/directfb/gtk-directfb.patch


    系统会提示某些地方patch的位置偏移了,这个没关系,因为gtk-directfb.patch只是patch gtk+的配置文件,这个patch应该是为gtk-2.4.9做的,但不影响使用。

    22、重新生成配置文件


    $aclocal
    $automake --add-missing
    $autoconf


    这需要安装autoconf-2.59网址(http://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.bz2)和automake-1.7网址(http://ftp.gnu.org/gnu/autoconf/automake-1.7.9.tar.bz2)同时还需要编辑configure.in文件,加入:


    AM_CONDITIONAL(ENABLE_GTK_DOC, false)
    AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, false)


    有关automake、autoconf和libtool的资料可以参阅autobook网址(http://sources.redhat.com/autobook/)以及Learning the GNU development tools

    网址(http://autotoolset.sourceforge.net/tutorial.html)

    23、编译并安装GTK/DirectFB


    $./configure --with-gdktarget=directfb
    $make
    $make install


    致此,您的基于uclibc+directfb+gtk+的Linux-PDA开发环境已经搭建好了,下边您就可以尝试在GTK基础上开发Linux-PDA的应用程序了。