搜档网
当前位置:搜档网 › Qt Embedded 的安装配置使用

Qt Embedded 的安装配置使用

Qt/Embedded的安装配置使用

江苏商贸职业学院226011 殷松瑜

摘要嵌入式开发大都选择开源的Linux作为开发平台,开源软件虽然功能很强,但配置安

装需要精通计算机很多专业知识。在Linux中大多数软件提供的是源代码,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,软件才能使用。有效的利用make和makefile工具可以大大提高项目开发的效率。

关键字Qt,Embedded,Makefile

在嵌入式开发的过程中要把Qt程序移植到嵌入式开发平台,在安装Qt的过程中碰到了不少问题,也学到了一些经验教训,想和大家一起开研究探讨。

笔者的实验环境,硬件:UP-CUP6410-II型网关部分嵌入式实验平台,软件:Vmware Workstation+Fedora Core8+MiniCom/Xshell+ARM-LINUX交叉编译开发环境,QT软件包:qt-embedded-linux-opensource-src-4.4.0.tar.bz2,tslib-l.4.tar.bz2。

Qt/Embedded(简称QtE)是一个专门为嵌入式系统设计图形用户界面的工具包。Qt是挪威Trolltech软件公司的产品,它为各种系统提供图形用户界面的工具包,QtE就是Qt的嵌入式版本。QtE虽然公开代码和技术文档,但是它不是免费的,当开发者的商业化产品需要用到他的运行库时,必须向Trolltech公司支持license费用(每套3美金),如果开发的东西不用于商业用途则不需要付费。QtE由于平台无关性和提供了很好的图形用户界面编程接口,在许多嵌入式系统中得到了广泛的应用,是一个成功的嵌入式GUI产品。

下面就是配置编译QT/Embedded环境的过程:

1、将QtE压缩包(/UP-CUP6410/SRC/gui/目录下)拷贝到新建立的目录下并解压

[root@localhost for_arm] # tar xjvf

/UP-CUP6410/SRC/gui/qt-embedded-linux-opensource-src-4.4.0.tar.bz2 -C

/home/uptech/QT4/for_arm/

这样在实验目录的for_arm下产生解压后的qt-embedded-linux-opensource-src-4.4.0目录。所有QT/Embedded环境源码都存放在此。

2、进入qt-embedded-linux-opensource-src-4.4.0目录执行configure文件,配置QtE环境[root@localhost for_arm ] #cd qt-embedded-linux-opensource-src-4.4.0/

[root@localhost qt-embedded-linux-opensource -src-4.4.0]#./configure -embedded

arm -xplatform qws/linux-arm-g++ -depths 8,16 -fast -qt-mouse-linuxtp -qt-mouse-tslib -I$PWD/../tslibl.4-install/include -L$PWD/../tslibl.4-installllib

-prefix /usr/local/Trolltech/Qt- embedded-4.4.0

其中-embedded arm参数指定支持ARM系列CPU平台,如果不加说明默认支持X86系列CPU平台,-xplatform qws/linux-arm-g++参数指定跨平台编译器的安装路径,-prefix参数指定QtE环境的安装路径;-qt-mouse-tslib参数指定了该QT/Embedded环境支持触摸屏设备;$PWD 表示当前目录,-I与-L参数指定了触摸屏设备的头文件以及库文件路径,当然,两个参数的指定要与实际编译tslib库时候安装路径为准。-depths 8,16参数指定支持8,16位的显示颜色深度。-fast参数指定快速编译安装QT/Embedded环境。

./configure配置选项过长,使用该命令时候请仔细检查不要写错。Configure的其他具体配置用户可以通过-help命令查看:

[root@localhost qt-embedded-linux-opensource-src-4.4.0]#./configure --help

在输出的许可证提示符下输入“yes”同意回车即可进入QT/Embedded库的配置过程,注意yes大小写及全称。

3、编译QtE库

[ root@localhost qt-embedded-linux-opensource-src-4.4.0]#make

由于QT库环境的庞大体积,编译QT/Embedded库环境时间比较长,具体时间因机器配置而异(大约2个小时左右)。

4、安装QtE库

[ root@localhost qt-embedded-linux-opensource-src-4.4.0]#make install

此时便会在/usr/local/目录下产生Trolltech/ Qt-embedded-4.4.0目录。

至此QtE安装结束

笔者在安装的过程中把参数-prefix /usr/local/Trolltech/Qt-embedded-4.4.0中的Trolltech错写成trolltech,仅仅相差一个大小写字母,后来为了Qt X11与QT/E环境一致,把/usr/local/trolltech/Qt-embedded-4.4.0又改写成/usr/local/Trolltech/Qt-embedded-4.4.0,但是后面出现了一系列编译运行问题。

编译运行一个QT/E程序testmyqt-x11为例,过程如下:

[root@localhost testmyqt-x11]# /usr/local/Trolltech/Qt-embedded-4.4.0/bin/qmake -project

此命令结果在当前目录下生成项目文件testmyqt-x11.pro。

[root@localhost testmyqt-x11]# /usr/local/Trolltech/Qt-embedded-4.4.0/bin/qmake QMAKESPEC has not been set, so configuration cannot be deduced.

Error processing project file: /home/uptech/testmyqt-x11/testmyqt-x11.pro

此命令是在当前目录下生成编译配置文件Makefile。

[root@localhost testmyqt-x11]# /usr/local/Trolltech/Qt-embedded-4.4.0/bin/qmake -spec /usr/local/Trolltech/Qt-embedded-4.4.0/mkspecs/qws/linux-arm-g++

但是由于安装路径有错找不到QMAKESPEC,只好手工添加QMAKESPEC路径,总算成功。然后用make命令编译程序又出错。

[root@localhost testmyqt-x11]# make

/usr/local/trolltech/Qt-embedded-4.4.0/bin/uic testx11.ui -o ui_testx11.h

make: /usr/local/trolltech/Qt-embedded-4.4.0/bin/uic:命令未找到

从提示说明可以看出是路径/usr/local/trolltech/出现问题。

怎么解决呢,后来就直接打开目录下的配置文件Makefile进行修改,把所有相关路径/usr/local/trolltech/ Qt-embedded-4.4.0全部改成/usr/local/Trolltech/ Qt-embedded-4.4.0,保存后再编译,又发生找不到库文件的错误。

warning: libts-0.0.so.0, needed by /usr/local/Trolltech/Qt-embedded-4.4.0/lib/libQtGui.so, not found (try using -rpath or -rpath-link)

/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libQtGui.so: undefined reference to `ts_read_raw'

/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libQtGui.so: undefined reference to `ts_open'

/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libQtGui.so: undefined reference to `ts_fd'

/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libQtGui.so: undefined reference to `ts_config'

/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libQtGui.so: undefined reference to `ts_close'

/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libQtGui.so: undefined reference to `ts_read'

collect2: ld returned 1 exit status

make: *** [testmyqt-x11] 错误1

其实还是路径/usr/local/trolltech/有问题,连接程序找不到相关链接库文件/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libts-0.0.so.0。

最后直接打开目录下的配置文件Makefile进行修改,找到参数项LFLAGS 直接添加LFLAGS=/usr/local/Trolltech/Qt-embedded-4.4.0/lib/libts-0.0.so.0,

保存退出再次编译后成功,并成功移植到ARM平台。

[root@localhost testmyqt-x11]# make

arm-linux-g++ /usr/local/Trolltech/Qt-embedded-4.4.0/lib/libts-0.0.so.0 -o testmyqt-x11 main.o myqt.o moc_myqt.o -L/home/uptech/QT4/for_arm/tslib1.4-install/lib

-L/usr/local/Trolltech/Qt-embedded-4.4.0/lib -lQtGui -lQtNetwork -lQtCore -lpthread

参看目标文件相关属性,就是可以移植到ARM平台的可执行文件。

[root@localhost testmyqt-x11]# file testmyqt-x11

testmyqt-x11: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped

嵌入式开发大都选择开源的Linux作为开发平台,在Linux中大多数软件提供的是源代码,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,软件才能使用。有效的利用make和makefile工具可以大大提高项目开发的效率,同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。

参考书目

[1]UP-CUP6410-II型物联网嵌入式综合实验平台实验指导书(网关部分) [M],北京:北京博创科技有限公司,2011

[2]徐成著,嵌入式Linux系统实训教程[M],北京:人民邮电出版社,2010

[3]常华著,嵌入式系统原理与应用[M],北京:清华大学出版社,2013

相关主题