嵌入式Linux中的应用中的GTK+

2016-01-29 18:01 51 1 收藏

嵌入式Linux中的应用中的GTK+,嵌入式Linux 中的应用中的GTK+

【 tulaoshi.com - Linux 】

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

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

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

GTK+ 与 X 的优点

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/linux/)

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 公司开发;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/linux/)

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 对一般的应用程序有着更好的支持作用,应用程序的开发会变得更高效。

 

[1] [2] [3]   

来源:https://www.tulaoshi.com/n/20160129/1503982.html

延伸阅读
1. dotnet连接fb Embedded Server版本 firebird分为两种版本,一种为安装版一种为嵌入式版本(该版本只需要一个fbembed.dll文件支持即可,此文件一定要是嵌入式版本中的(1.5.2版的文件大小为1489KB),不能使用安装版的fbembed.dll文件) 使用方法: 首先把 fb Embedded Server 的 fbembed.dll 拷贝到应用程序目录下。并且要使用fb.net provid...
驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式Linux不能够象桌面Linux那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。 下面以uClinux为例,介绍在一个以模块方式出现的驱动程...
标签: 电脑入门
多媒体时代的电子文档、表格、演示,大量运用图片、图表、公式、声音、动画等嵌入式对象,在增添了作品的表现力的同时,也给作者的编辑工作带来了一定的难度。不过,您别急,WPS全新推出的校园版及在线升级过的抢鲜版集成了对象图层工具,可以助您一臂之力。 一、认识对象图层工具及按纽。您可以在插件工具栏中可以找到对象图层,也可以打开WP...
标签: PHP
初始化部分。这部分包括硬件层和软件层上的初始化。在本例中,需要先对矩阵电路和SN74hc164芯片所使用到的GPIO端口作配置,以使CPU可以对它们进行控制和访问。为了要将某个GPIO端口配置成输入输出或者是中断源,需要在对应的GPIO控制寄存器中设置正确的值,具体的值可以通过查阅S3C2410开发板手册来获得。比如,...
最近参与的project中需要把用户登录嵌入一个file open对话框,让用户在打开云端文件之前确认登录。 Existing方案: 将用户登录相关功能集成到一个Combo Box中,用户通过其显示窗口描述当前用户账户状态。 –用户已登入账户,显示其用户名 Sign in–用户尚未登入账户,选择该command进行登录操作 Sign out用户已经登入账户...

经验教程

511

收藏

33
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部