精通嵌入式Linux编程—构造自己的GUI环境 pdf
2013-02-21
第一个问题,为什么要写这本书?
现在很多面向嵌入式 Linux 的编程书籍大都泛泛而谈,并不针对某一个领域,
对于解决某一个领域的特定问题没有指导性。例如,C 语言的书一大堆,但我们
不是只为学习 C 语言而学习 C 语言,阅读者并不仅仅是想掌握 C 语言的编程规范,
而是用 C 语言在某一个平台上实现某种功能、解决某种问题。
利用嵌入式 Linux 来构造系统,一般来说以便携式终端产品居多,就软件方
面而言,这类产品主要有两种环节需要把握:一是 Linux 的内核(包括驱动)的
移植;另一方面就是 GUI 层与应用层软件的设计。
有些人说,嵌入式 Linux 的最大问题是其 GUI 没有统一标准,我不知道这是
他的缺点还是优点,是否应该由如 Microsoft 或 Nokia 这种级别的公司在这个操
作系统平台上构造一个全世界都一样的用户界面,然后我们大家都它的 API 来开
发应用程序呢?这个问题我不想讨论。据我所知的情况,基于一个原则,就是嵌
入式产品对于界面的需要简直是太不一样了,MP3、MP4、导航仪、电视机顶盒、
手机等等,五花八门,如果所有的界面都从“开始”菜单开始,我不知道操作起
来是不是都很方便,是用手指、遥控器、鼠标还是别的什么东西。所以,对于嵌
入式产品,我认为个性化用户界面才是合适的,那么——为什么自己不去构造一
个属于自己的 GUI 系统呢?例如,你所在的公司是做手机的,或你所在的公司是
做机顶盒的,那么,为什么不开发一个小型的 GUI 库呢,为什么要说用某某某种
GUI 系统,既然在嵌入式环境对于 GUI 系统的需求千差万别,而任何一个 GUI 都
不可能有如此好的适应性和可配置性,那么把一个 PDA 风格的 GUI 系统移植到机
顶盒上到底有什么意义,把一个手机风格的 GUI 移植到工控机里又有什么意义?
所以,最简单的办法,就是自已构造一个小型的 GUI 环境,只针对你的应用,与
其他系统无关。
那么,可能有人会说,量体裁衣开发一个适合于自有项目的 GUI 环境固然很
好,但这会不会很复杂,是不是会使项目周期拉长?这本书正是要告诉你,开发
一个小型的嵌入式 GUI 系统其实很容易!何况网络上有如此之多的开源代码可供
参考。当然无偿 Copy 开源软件用于商业目的是不允许的,但思想是自由的,这一
点我想谁也否认不了——“我怀疑你看过某某代码,所以要 GPL”的说法我认为
是荒唐的!
另外,现在已经开发完并开源的面向嵌入式 Linux 的 GUI 系统固然很多,而
且还有一些技痒的人又在开发这个“柜”那个“柜”的,但没有人仔细讨论到底一个嵌入式 Linux 的 GUI 系统的体系结构如何,能让使用者从全局把握系统,从
而能开发出自己的 GUI 环境,而不是 e 柜、f 柜、g 柜……这样开发下去。我如果
说这是个“鱼”和“渔”的关系,不知大家认不认可!
所以我写了这本书——通过嵌入式 Linux 特定环节的应用实例,即中间件层
的 GUI 软件,来精通 Linux 开发,同时对于消息驱动的、轻量级窗口系统的实现
有较为彻底的理解。
第二个问题,这本书都什么特点?
我只针对 GUI 这个环节讨论其中的技术问题,讨论如何在嵌入式 Linux 上实
现,用到了 Linux 开发的那些技术细节,所以第一个特点是针对性强;
另外,我不想为了凑页数而把这本书搞成一个 Linux 编程的百科全书,讲清
楚一个问题是最重要的,所以第二个特点是没有废话。
最后,这本书写出来,先放到网上,谁想看都行,不为赚钱,只希望对大家
都所帮助。只有大家愿意承认我做的工作有意义就行。
——李玉东