QT学习系列-----4 --Qt 版本及qwt
---恢复内容开始---
关于QT,其实我主要还是要在嵌入式设备中的应用。安装QT其实本身不麻烦,但是我还是走了很多的弯路。。。。。。
一: Qt版本问题: 不能糊涂
目前Qt的版本已经更新到Qt5了。但是资源部分基本上还是停留在Qt4。所以入门,还是以Qt4最好。
而对于嵌入式开发,版本就比较繁杂,发展历程比较漫长。所以对版本的理解,其实是减少弯路的关键。。。本人就在版本上迷惑了很长时间。
Qtopia2.2.0 ---> Qtopia4.4.3 ------> Qt/E --------> 目前的Qt4(eg: Qt 4.7.1 /Qt 4.8.5)-------->Qt5(不推荐新手使用)
最好几个版本都在开发板上跑一遍。而对于这种交叉平台上的编译与调试,最好搭建好NFS,方便文件之间的传输。关于NFS的搭建,本人在嵌入式Linux总结中有相关涉及。
Qtopia2.2.0是经常谈及的一个应用于嵌入式中的Qt版本。但是我在安装qwt插件的时候总是安装不成功。导致了我后来决定放弃用这个版本进行GUIde设计。。。不知道是因为qwt不支持Qtopia2.2.0还是因为本人没有安装好,没有彻底的解决问题。
二: 交叉编译。。。一定要弄清楚路径和qmake,以及linux-arm-g++
交叉编译,由于是跨平台操作,编译出来的二进制,是没有办法直接在PC上面运行的。当然如果要在PC上面进行运行,其实可以通过模拟器进行。利用qvfb模拟出GUI界面。
交叉编译,往往会另人犯糊涂,结果出错了,都不知道问题出在哪里! 例如qmake,在装了几个版本后,会发现qmake不能随便用,或者说要注意使用的是哪个qmake。一般我会在.bashrc文件中将这些工具都用alias进行别名的命名。这样就省去了在命令行下输入路径的麻烦,也防止选错了qmake。
qmake 的一般格式在交叉编译过程一般为: /your/path/qmake -spec /your/path/mkspecs/qws/linux-arm-g++ -o Makefile.target *.pro
三: 关于qwt插件
插件需要利用qmake及make进行编译生成相应的库文件供qt使用。所以编译一步是必须要进行的。
此时就会涉及到交叉编译qwt。qwt目录下有qwtconfig.pri可以对配置进行设置。 此时一般在交叉编译是将Designer给注释掉,这样能防止交叉编译过程中出错。 将生成的库文件拷贝到交叉编译qt版本的库文件目录下,从而打开qt designer时,就会发现该库。
在你的工程文件中,要加上你的qwt的头文件和库文件。例如: INCLUDEPATH += /your/qwt/path/src #
LIBS += -L"/your/qwt/path/lib" -lqwt
注意,这里的头文件和库文件均要保证是通过交叉编译得来的文件。否则在链接的时候会报错,主要原因就是库文件不匹配。不是交叉编译得来。
至于安装部分,参考网上的一些教程。其实基本上不会有错。。。如果出错,首先确定你的设置,你的交叉编译工具链,你的libs,你的path,你的qmake等等
四: 使用
Qtopia2.2.0有designer,但是qt4.8.5在交叉编译后发现没有designer,不知道为什么。但并不是说不能用。可以用没有交叉编译的qt进行设计ui,利用交叉工具链进行编译。主要在工程文件要对INCLUDEPATH和LIBS进行设置。上面已经给出。设置好后就可以编译生成可执行文件了。
生成的可执行文件,通过命令file进行检查一下文件的属性。可以看出是交叉编译生成的目标平台上的二进制文件,即可说明交叉编译成功。再通过NFS共享到开发板。
在开发板上设置好路径,设置好LD_LIBRARY_PATH,命令行输出./*** -qws即可运行