第一个Qt应用的实现-QT4.8.5移植到S3C2440

2023-11-09 05:08

本文主要是介绍第一个Qt应用的实现-QT4.8.5移植到S3C2440,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、linux下面装好Qtcreator

首先要准备好交叉编译所需要的软件包:

1arm-linux-gcc-4.4.3-20100728.tar.gz(交叉编译环境)

2qt-everywhere-opensource-src-4.8.5.tar.gzQt的源码)

3qt-creator-linux-x86_64-opensource-2.5.2.bin(我的系统是64位,所以选择x86_64

4tslib-1.4.tar.gz(触摸屏校验工具)

其中(2)和(3)在http://download.qt-project.org/archive/ 进行下载。

 

记住tslib需要交叉编译,具体方法网上很多,常见错误我的博客也有。

(确保tslib/bin下的文件是32ARM的,并且移植到开发板usr/local/tslib下后ts_calibrate可以正确运行)

 

qt-creator-linux-x86_64-opensource-2.5.2.bin 拷贝到linux系统中,在终端中把路径切换到qt-creator-linux-x86_64-opensource-2.5.2.bin所在的路径,运行令:./qt-creator-linux-x86_64-opensource-2.5.2.bin  就会出现图形安装界面;下面的安装步骤就和我们在windows下安装软件差不多。

 

注意:下的版本要和你的操作系统相匹配,32位的系统下对应32位的应用程序;

 

 

 

二,Windows下面安装Qt

下面我们来进入正题,windows下安装4.8.5版本的qt软件。

1、下载qt-win-opensource

首先需要下载QT安装软件,在qt官网可以直接进行下载,但是由于天朝局域网的限制,官网打开的速度很慢,而且有些网址无法打开,这里贴出直接的下载网址,省去从官网找下载网页的麻烦。网址是:http://download.qt.io/archive/qt/

QT的编译可以使用mingw或者vs2008vs2010进行,其中mingw是可以使用一个库进行编译,其他的vs版本需要安装vs才能进行QT编译,vs比较大,所以我这里就使用mingw,下载对应的版本qt-win-opensource-4.8.5-mingw.exe

2、下载和安装MinGW

安装这个之前需要mingw,所以需要先下载mingw,但是QT每个版本对于mingw的版本也是有要求,这里提供可以匹配的mingw下载http://download.csdn.net/detail/andylauren/9583691

下载完成之后只需要进行解压,我一般习惯解压在c盘根目录下,并将文件夹改名为mingw。这个文件夹路径在后面设置的时候需要用到。

3、安装qt-win-opensource

这一步骤比较简单,就是下一步下一步就行,注意设置一下安装路径就好。

4、下载和安装QTcreator

qt-win-opensource是一个纯代码编辑环境,如果对于老工程师可以完全使用代码进行界面的编辑,但是有界面设计的可以提高开发效率,所见即所得。

下载地址是:http://download.qt.io/archive/qtcreator/

我选择的是qt-creator-win-opensource-2.5.2,因为我选择最新的3.0版本不能正常使用。然后也是简单的下一步下一步,在其中一个步骤的时候需要选择mingw的路径,就是将前边解压的mingw路径填写进去,然后在安装的时候设置一下安装路径就可以了。

5QTcreator设置,环境变量的设置

这个时候是不能使用QTcreator进行QT开发,需要对一些进行环境设置,

步骤是:工具-》选项-》构建和运行-Qt Versions

将其中的qmake路径填写qt-win-opensource的安装路径中的bin目录下的qmake.exe

编译器选项

在之前安装的时候如果已经选择了mingw路径的这里会自动出现,如果之前跳过了在这里可以选:添加-mingw,然后找到目录下的bin目录

在构建套件(Kit)选项卡下需要设置编译器:选择MinGWQt版本:选择Qt 4.8.54.8.5

现在基本已经设置好了,已经可以使用QT进行编译,但是编译出来的可执行文件只能在QT中使用qt打开运行,在文件夹中直接点击可执行软件不能运行,会提示找不到库,这里是需要设置一下windows的环境变量,在PATH中添加qt-win-opensource安装路径下的bin路径,和mingwbin路径。

首先右键我的电脑-》属性-》高级系统设置-》高级-》环境变量-》系统变量-path中添加上述路径。我的路径是D:\Qt\4.8.5\bin;D:\mingw\bin;

这样就可以在文件夹中直接双击可执行文件运行了。

6、个人设置

我比较喜欢深色背景的编程环境,可以在选项-》文本编辑器-》配色方案中进行修改,我修改为Inkpot

还有就是我使用eclipse习惯了,习惯使用alt+/来作为自动补齐,可以在环境-》键盘中找到CompleteThis修改为Alt+/就可以了。

 

到这里就完成了全部的windows下载安装和设置,如果习惯了windows下载操作可以在windows下做开发,然后完成后拿到linux下进行编译,运行。

 

三、Qt库源码编译

将源码qt-everywhere-opensource-src-4.8.5.tar.gz 进行解压,并复制三份到/usr/local目录下,并分别命名为qt-pcqt-arm

进入qt-pc目录,执行如下操作:

#./configure

# make

# make install

编译过程中出现的问题:

出错:Basic XLibfunctionality test failed!

这个错误主要是因为,XLib库没有安装,所以在编译X11平台时,应该保证,以下命令正确执行:sudo apt-get install libx11-dev  libxext-dev libxtst-dev

注意:可以使用 make confclean 命令 把以前的配置信息清除掉,然后再重新配置。

 

下面编译qt-arm

必须加上“-prefix /usr/local/Trolltech/QtEmbedded-4.8.5-arm ”参数, 不然安装后不在QtEmbedded-4.8.5-arm文件夹下,而是覆盖了QtEmbedded-4.8.5

写一个脚本文件,把下面放进去

# ./configure \

-prefix  /usr/local/Trolltech/QtEmbedded-4.8.5-arm \ 

-opensource \

-confirm-license \

-release -shared \

-embedded arm \

-xplatform qws/linux-arm-g++ \

-depths 16,18,24 \

-fast \

-optimized-qmake \

-pch \

-qt-sql-sqlite \

-qt-libjpeg \

-qt-zlib \

-qt-libpng \

-qt-freetype \

-little-endian  -host-little-endian \

-no-qt3support  \

-no-libtiff   -no-libmng \

-no-opengl \

-no-mmx  -no-sse  -no-sse2 \

-no-3dnow \

-no-openssl \

-no-webkit \

-no-qvfb \

-no-phonon \

-no-nis \

-no-opengl \

-no-cups \

-no-glib \

-no-xcursor   -no-xfixes  -no-xrandr   -no-xrender \

-no-separate-debug-info \

-nomake examples   -nomake  tools   -nomake docs

 -qt-mouse-tslib  -I /usr/local/tslib/include  -L /usr/local/tslib/lib

如果放弃配置,则使用命令:# make confclean

编译:# make

安装:# make install

(我自己遇到的问题另一篇博客也有写)

安装完成后,在/usr/local/Trolltech目录中有个文件夹:Qt-4.8.5QtEmbedded-4.8.5-arm

 

 

然后将库QtEmbedded-4.8.5-arm下面的lib plugins demos example目录通过NFS服务放到开发板相同目录下面即可。

到这个时候就可以在开发板上运行QT程序了

 

四、测试

 

首先我们需要自己写一个代码,什么 代码都行,拿来别人的也可以。可以在windows或者linux上写都行,我个人的习惯是在windows下面编辑代码,查看运行效果,效果没问题了在拿到linux下进行交叉编译。

 

下面我们现在windows下写一个最简单的例子:你好世界!

 

这个例子中会使用到中文和按钮切换标签的内容。

 

如何创建工程这里就不细讲了,书上和网上有很多教程,按照步骤去做就好。

 

然后就可以将我们的文件复制到linux 下面去进行交叉编译了,这里只需要复制源码文件,工程文件建议删除,因为在交叉编译的时候会生成新的工程文件,我的文件如下

 

把他们压缩成一个包,到linux下面去解压,然后使用终端跳转到这写文件的路径下

 

linux@ubuntu:~/16021/QTprog$ cd /usr/local/Qt(放上面四个文件的目录)

然后找到交叉编译出来的qmake路径使用qmake -project

 

linux@ubuntu:~/16021/QTprog/chinesefont-linux$ /usr/local/TrolltechQtEmbedded-4.8.5-arm/bin/qmake -project

有的人会把这个交叉编译qmake设置为环境变量,我习惯把x86下的qmake设置为环境变量,这样就可以在linux下面查看效果,但是在交叉编译的时候就需要输入qmake的全路径,如何设置还需要根据个人需要。

 

这时候目录下就会出现.pro的工程文件

 

然后我们再qmake就可以生成makefile

 

linux@ubuntu:~/16021/QTprog/chinesefont-linux$ /usr/local/TrolltechQtEmbedded-4.8.5-arm/bin/qmake

然后使用make编译

 

之后会出现可执行文件,比如我的是chinesefont

 

把它拷贝到开发板的文件系统上,路径随意。我是直接拷贝到根目录下,然后需要一个启动脚本。

1. #!/bin/sh  

2. base1=qpe  

3. pid=`/bin/pidof $base1`  

4. if [ -n "$pid" ]; then  

5.     killall $base1  

6. fi  

7.   

8. base2=qss  

9. pid=`/bin/pidof $base2`  

10. if [ -n "$pid" ]; then  

11.     killall $base2  

12. fi  

13.   

14. base3=quicklauncher  

15. pid=`/bin/pidof $base3`  

16. if [ -n "$pid" ]; then  

17.     killall  $base3  

18. fi  

19.   

20.   

21. base4=fluidlauncher  

22. pid=`/bin/pidof $base4`  

23. if [ -n "$pid" ]; then  

24.     killall  $base4  

25. fi  

26.   

27. export TSLIB_ROOT=/usr/local/tslib #你开发板的tslib路径

28. export TSLIB_TSDEVICE=/dev/input/event2  

29. export TSLIB_TSEVENTTYPE=H3600  

30. export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf  

31. export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts  

32. export TSLIB_CALIBFILE=/etc/pointercal  

33. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  

34. export TSLIB_CONSOLEDEVICE=none  

35. export TSLIB_FBDEVICE=/dev/fb0  

36. export QTDIR=/usr/local/TrolltechQtEmbedded-4.8.5-arm/ #你的qt库路径

37.   

38.   

39. export LD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/qt_plugins/imageformats/:$QTDIR/lib:/root/tslib/build/lib:$LD_LIBRARY_PATH  

40. export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/root/tslib/build/bin  

41.   

42.   

43. if [ -c /dev/input/event2 ]; then  

44.         export QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}"  

45.         if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then  

46.                 rm /etc/pointercal  

47.                 /root/tslib/build/bin/ts_calibrate  

48.         fi  

49. else  

50.         export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"  

51.         >/etc/pointercal  

52. fi  

53. export QWS_KEYBOARD=TTY:/dev/tty1  

54.   

55.   

56.   

57. FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)  

58.   

59. #export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"  

60. case "$FB_SIZE" in  

61. 800,480)  

62. export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"  

63. ;;  

64. 480,272)  

65. export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"  

66. ;;  

67. *)  

68. export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"  

69. ;;  

70. esac  

71. #export QWS_DISPLAY=:1  

72.   

73.   

74.   

75. export HOME=/root/QtE4Home  

76.   

77. #cd /home/linux/arm/qt-4.8.5-arm/demos/embedded/fluidlauncher(qt可执行文件的路径)  

78. ./chinesefont -qws  

其中倒数第二行是跳转到可执行文件的路径下,根据自己的需要进行修改,我的脚本和可执行在同一个目录,所以我把这行注释掉了。

最后一行就是启动可执行程序,结尾的-qws是必须的。

 

是不是和电脑看到一样,如果想做成开机启动,只需要将启动脚本加入到/etc/init.d/rcS里面就可以了。

讲到这里我们就已经从windows安装到linux安装再到arm平台交叉编译,最后将自己的程序运行起来了 。

 

这篇关于第一个Qt应用的实现-QT4.8.5移植到S3C2440的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/374118

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#