首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>嵌入式开发>正文

在嵌入式Linux系统中应用的GTK 和X分析

http://www.oklinux.cn  2008-03-10  赛迪网 Inetxper  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

在嵌入式 Linux 下有很多图形界面系统 GUI,包括 Qt/Embedded,FLTK,Microwindows 和 GTK 等。作为一个开发者,到底使用什么样的 GUI 系统呢?对一个系统,将它改造为符合你的需求,你要做多少修改呢?修改后的系统的尺寸一般会有多大呢?这些都是开发人员会遇到的问题。我们在这里讨论的就是要对这些内容做一个具体细致的分析,通过我们的讨论,大家会对基于 GTK 和 X 的 GUI 在嵌入式Linux 下的应用有一个确切的了解。

在嵌入式系统应用日益发展的今天,越来越多的应用都需要使用到 GUI 来进行开发,以此来获得更好的交互性。

嵌入式 Linux 下 GUI 的选择,对大多数开发人员来说是一个需要权衡对比的过程。选择 GTK 运行在 X 系统上,然后 X 系统运行在嵌入系统的 framebuffer 上,这会是一个很好的选择。

GTK 与 X 的优点

当然,GTK 与 X 一般都是被大家考虑为体积较大的桌面系统的好搭配,但实际上对于嵌入系统来说,它也有着诸多的优点:

1、 X-window 系统与 GTK 都非常稳定可靠,X-window 系统是经历了长期的开发及应用实践的,GTK 也是一个比较成熟的开放源代码项目;

2、 X-window 系统是一个灵活的 client/server 的模型结构,一个应用客户端的崩溃不会影响到图形系统的其他部分,这是一个很重要的特性,它有利于支持第三方应用的扩展开发,而不影响到主体部分;

3、 GTK 有两个重要的库:GDK和GLIB。GDK抽象了底层的窗口管理,要移植 GTK 到另一个不同的窗口系统的话,我们只需要移植 GDK 就可以了。GLIB 是一个工具集合,它包括了数据类型,各种宏定义,类型转化,字符串处理,任何应用程序都可以链接这个 GLIB 库,使用其中的各种数据类型、方法,来避免重复代码,或者说避免开发人员重新发明轮子,这样有利于减少整个系统的尺寸;

4、 对 GTK /X 的裁剪是很容易的,它们有着很好的可配置的选项,有着清晰的代码结构,可以保证安全正确地去掉大段的不需要的代码;

5、 GTK 有着大量的应用,GTK 已经被用在了很多重要的应用系统中;

6、 GTK 的授权是 LGPL 方式的,X 是 non-copyleft free license 的,第三方开发的系统都能与它们进行链接;

7、 GTK /X 二者都是基于 C 代码的,而不是C ;

8、 GTK 使用 C 来实现了面向对象的架构;

其他 GUI 系统

其他可以选择的图形系统包括:Qt/Embedded,FLTK 和 Microwindows。

1、 Qt/E 是其中较高级的,它是一个完整的,基于 framebuffer 的 GUI 系统,由 Trolltech 公司开发;

2、 Qt/E 有着高效的图形渲染效果,还包括 TrueType 字体系统,及 alpha blending 半透明处理;

3、 但 Qt/E 不是使用 LGPL 授权方式,而是使用两种授权方式:开发使用 GPL,而商用需要授权与版税;

4、 Qt/E 是用 C 编写的;

5、 Qt/E 非常大,一个 iPAQ QPE 就包括了 3.3MB 的 Qt/E 库和一个 718KB 的 QPE 库(和 Xlib 类似的一种库);

6、 Qt/E 不够稳定,QPE demo 不错,但出现过崩溃;

7、 FLTK (the Fast Light Toolkit) 是一个小型的 GUI 图形系统,它也是用 C 写的,特性太少,应用范围较少,不够成熟;

8、 Microwindows 和 X-Window 相比也是一个不错的选择,它占用大约 100KB-600KB 大小的内存,和文件存储空间,虽然已经有了一个其上的 GTK 移植,但还是不够成熟;

X-window:比你想象的要小很多

对于X-window系统,广大的网络开发者已经做了大量的工作来减小其的尺寸,最知名的有TinyX。可以通过对不需要的代码的裁剪及去除XLIB中静态数据来减少总体的尺寸,如:color管理系统,弧形,粗线条等。

在大多数开发人员的印象里,X 系统很庞大,但实际上,你听到的,是那些对 X 不够了解的人的一种误解。在经过裁剪后的情况下,GTK /X 要比 GTK /FB 与 Qt/E 还要来得有效,且 XLIB 对一般的应用程序有着更好的支持作用,应用程序的开发会变得更高效。

如何裁剪 GTK

我们可以从标准的 GTK 发行版本来裁剪,裁剪掉其中的不需要的,修改已经有的代码,并加入新的特性所需要的代码。裁剪的范围包括小的改动,也包括一些大的结构性的、核心的改变。

1、 去除 Widgets 窗口

最开始,我们把不需要的 Widgets 去除掉,比如:GtkGamma、GtkHRuler、过时了的 GtkList(被 GtkCList所替代了)、和我们不需要的 GtkFrame 边框。

2、 Widgets 窗口尺寸与绘制

接着,修改Widgets的大小与绘制方法,GTK 提供了一个主题引擎机制,来控制窗口的外观与效果。它允许在运行中设置字体,设置行间隔,设置绘制特性。这样的机制很不错,但不够灵活,代码中很多设置的地方都是使用硬编码的方式;另外,一种主题,就是一堆额外的代码段和参数,这样会增加整体的尺寸。

需要找出影响到窗口系统整体尺寸的内容,再来修改它。比如,一个按钮的大小与绘制,包括这样的参数:边框的宽度,x/y的位置(主题引擎需要的参数),缺省的间隔(常量),缺省的左上角的位置(常量),获得焦点。这些在嵌入系统中并不需要那么完整,我们可以根据实际的需求来简化代码,来避免GTK 的复杂性。

共4页: 上一页 1 [2] [3] [4] 下一页

上一篇:Ubuntu 8.04 alpha5下安装iwl3945无线网卡驱动问题的解决   下一篇:系统编译:如何给Make命令来传递参数

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·嵌入式:关于Linux下_init与_exit的解释
·嵌入式技巧:ARM的三种中断调试方法介绍
·使用虚拟机嵌入式Linux开发前的必要准备
·用NFS服务开发ARM Linux程序的方法介绍
·虚拟机Linux系统下连接ARM开发板的方法
·嵌入式Linux系统下的网页浏览器 WebKit
·系统学习嵌入式Linux 几点非常实用的建议
·嵌入式Linux攻略 ACE程序移植过程详细解析
·嵌入式基础 当今常用的开源协议详细解析
·Linux攻略 嵌入式系统的开发流程概括介绍
·Linux嵌入应用:ARM体系结构的技术特征
·天造地设的绝配 Linux和嵌入式系统应用
·嵌入式Linux系统名词解释及资源大全
·高手进阶 2.6内核的Linux嵌入式系统应用
·基于2.6.19内核小型Linux系统制作与移植
·嵌入式Linux系统学习规划
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·“中立人士”对嵌入式Linux的相关评论
·嵌入式技巧:ARM的三种中断调试方法介
·嵌入式:关于Linux下_init与_exit的解
·使用虚拟机嵌入式Linux开发前的必要准
·用NFS服务开发ARM Linux程序的方法介绍
·虚拟机Linux系统下连接ARM开发板的方法
·嵌入式Linux系统下的网页浏览器 WebKit
·系统学习嵌入式Linux 几点非常实用的建
·嵌入式Linux攻略 ACE程序移植过程详细
·嵌入式基础 当今常用的开源协议详细解
·Linux攻略 嵌入式系统的开发流程概括介
·Linux嵌入应用:ARM体系结构的技术特征
  阅读排行
· 常见的嵌入式操作系统都有哪些?
·嵌入式Linux文件系统详细介绍
·Linux攻略 嵌入式系统的开发流程概括介
·嵌入式Linux系统学习规划
· 嵌入式linux下常见的文件系统
·系统学习嵌入式Linux 几点非常实用的建
· armlinux启动配置文件 /etc/init.d/rc
·嵌入式系统的开发流程概括介绍
·U-Boot的常用命令详解
·疯狂DIY! 在iPod上安装Linux系统
·嵌入式Linux系统下的网页浏览器 WebKit
·详述嵌入式系统下Microwindows的实现
·Linux嵌入式系统的内存管理方法详细介
·嵌入式Linux系统名词解释及资源大全
·嵌入式Linux系统软件开发学习思路详细
网摘收藏: