QT是一个跨平台的图GUI编程的图形库,现在由Nokia公司维护,最新的发行版是4.6.2。我们将开发一款基于ARM平台的手持产品,开发库 的平台选择有Android与QT,我个人喜欢用C++,故比较倾向使用QT。

  QT是一个开源的图形库,针对不同的CPU平台使用不同 的编译器进行编译来达到跨平台,这点与JAVA有点不同,JAVA的跨平台是由虚拟机来实现。使用开源项目的麻烦之处在于你得到代码后需要自己编译才能使 用,我们要使用QT要比使用单单的开源项目更麻烦,因为我们的程序运行平台由于不能直接进行程序的编译程序,需要使用交叉编译工具链进行编译,这对习惯于 使用VC来开发的人来说是个不小的改变。

  曾经有人说QT属于失意者阵营的产品,开始我还不相信。经过半个月的编译,感觉到把它扔到失意 者阵营是很正确的分类。有过VC开发经验的人都知道,一个MSDN基本上能解决开发过程中遇到的绝大总分问题;VC的方便性更是无与伦比的。

   在编译QT时,最新版本的源码不再分Embedded和X11版,使用一套代码便可以编译出针对不同平台的库文件。本来这个做法是件好事,可恶的是文档 的介绍太山寨了,按照官网提供的编译说明,根本没办法达到自己的需求,在网上搜索出的各个说明资料都是以4.5.×以下的版本,这些版本都是分 Embedded和X11发行的,编译要容易些。

  开始时先编译Embedded版本,这个编译很顺利,基本上一天就搞定,但拿到板子上 运行时,出现了可恶的两鼠标事件。这个版本的QT是直接操作FrameBuffer,相当于针对在没有桌面环境的情况运行QT程序的需求。两鼠标问题找了 很久没找到原因,最后设置了一些开机启动的参数,不启动桌面环境,来消除另一个鼠标。得到的结果是,只能运行QT自己的程序,无法使用其它的程序,此时我 已经快疯了。

  然后在网上找资料,发现一个lab里有一篇关于X11版本的编译说明,在编译的测试阶段都出现了不可修改的错误,然后无意 中在这个lab中又发现一篇类似文章(实际这个网址很早以前就有同事给过我),看了一遍没看明白写得些啥玩意,找其它资料又找不到,只好边看边试了。试的 过程中完全是一步一个坎……折腾了快两个星期才搞定……途中对这东西差点就绝望了……编译个库都这么费劲,不把它扔到失意者阵营,完全不能解心头之恨~

   整完以后,感觉对交叉编译的理解倒是更清楚了些。而且测试Hello World时,也是可以用的,目前看来此任务算是完美结束了。不知道将来实际写代码时,还会遇到多大的坎……

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐