第一个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平台交叉编译,最后将自己的程序运行起来了 。

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值