仓酷云
标题:
来看看:在嵌进式Linux体系中使用的GTK+和X剖析
[打印本页]
作者:
飘飘悠悠
时间:
2015-1-16 16:51
标题:
来看看:在嵌进式Linux体系中使用的GTK+和X剖析
不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令。
在嵌进式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-copyleftfreelicense的,第三方开辟的体系都能与它们举行链接;
7、GTK+/X两者都是基于C代码的,而不是C++;
8、GTK+利用C来完成了面向工具的架构;
其他GUI体系
其他能够选择的图形体系包含:Qt/Embedded,FLTK和Microwindows.
1、Qt/E是个中较初级的,它是一个完全的,基于framebuffer的GUI体系,由Trolltech公司开辟;
2、Qt/E有着高效的图形衬着效果,还包含TrueType字系统统,及alphablending半通明处置;
3、但Qt/E不是利用LGPL受权体例,而是利用两种受权体例:开辟利用GPL,而商用必要受权与版税;
4、Qt/E是用C++编写的;
5、Qt/E十分年夜,一个iPAQQPE就包含了3.3MB的Qt/E库和一个718KB的QPE库(和Xlib相似的一种库);
6、Qt/E不敷不乱,QPEdemo不错,但呈现过溃散;
7、FLTK(theFastLightToolkit)是一个小型的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+的庞大性。
别的,利用面向工具的办法,来承继窗口Widgets的特征,作为子类也是一个无效的办法。
3、GtkWindow
GTK+老是假定一个窗口内里包括了另外一个窗口,它们就是嵌套干系。但关于我们常常会碰着的有软键盘的使用时,就不完整准确了。软键盘固然是属于一个窗口的,但却会超越谁人窗口。以是为了冲破这个假定,必要对GtkWindow增添一些特征,将软键盘处置成一种特别的子窗口。
软键盘地点的窗口,必要处置软键盘的按键事务,并将按键转发给软键盘工具条。当软键盘按下,软键盘的回调函数就被注册到原始窗口上,如许软键盘就会呼应按键事务。在GtkWindow上增添接口,能够创立,呼应按键。
在小屏幕的嵌进体系中,能够将转动条做得更简化些,往失落边框,利用单个转动条。这些都更合适嵌进体系
</p>
使用gcc或g++进行编译,使用gdb进行调试;
作者:
莫相离
时间:
2015-1-18 17:08
学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。
作者:
金色的骷髅
时间:
2015-1-27 08:41
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
作者:
飘灵儿
时间:
2015-2-5 08:31
随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).
作者:
乐观
时间:
2015-2-11 08:22
Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
作者:
兰色精灵
时间:
2015-3-2 03:43
生成新的unispimsp.ksc。”另外得到回复后如果问题解决,向帮助过你的人发个说明,让他们知道问题是怎样解决的。
作者:
只想知道
时间:
2015-3-11 02:43
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
作者:
变相怪杰
时间:
2015-3-17 19:11
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
作者:
不帅
时间:
2015-3-24 22:42
工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2