您的位置:首页 > 编程语言 > Qt开发

实战tiny6410上的QT开发环境搭建与示例程序 作者:stephenzhu 小桥加加

2013-02-26 15:58 756 查看
虚拟机: vmware7 + fedora9
开发板: tiny6410
qt版本:qte4.7.0 (后来移植qt4.7.3也成功了)

1) 在虚拟机上 获得QTE4.7源码并释放且编译
第一步,获得源码并翻译
在虚拟机上,把qt-everywhere-opensource-src-4.7.0.tar.gz 释放。
释放的目录可以是任何比如 /home/stephen/stephenshare

第二步,编译
在虚拟机上操作

先配置参数:
echo yes| ./configure --prefix /opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-linuxtp -no-neon
也有人这么写(加上了-qt-mouse-pc):
echo yes | ./configure --prefix=/opt/Qt4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -no-neon
(补充:如果在这步之前系统中没有tslib, 那还要先编译tslib1.4
1)编译tslib 1.4
./autogen.sh生成configure

./configure --prefix=/opt/tslibemb --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
make && make install
2)命令行
echo yes| ./configure --prefix=/opt/Qtemb4.7 -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -I/opt/tslibemb/include -L/opt/tslibemb/lib -qt-mouse-linuxtp -no-neon -ldl
)


然后make && make install
请注意这里设了--prefix是/opt/Qt4.7,就安装在这目录下 , 有的时候这个写法不被系统认可,需要写成--prefix=/opt/Qt4.7即加一个“=”号.

在我的双核DUO T7250电脑上,虚拟机768M RAM情况下,编译过程花费了5个小时。

2) 在ARM板上即tiny6410上去部署Qt4.7
把虚拟机上的Qt4.7打包
#cd /opt
#tar cvzf qt4.7.tgz Qt4.7
再以SD卡或nfs方式, 在tiny6410上的/opt目录解压
#cd /opt
#tar xvzf /sdcard/qt4.7.tgz

3) 虚拟机里 QT Creator安装配置及示例编译
在虚拟机里装QT CREATOR,注意是到nokia官方去下载最新的包,现在的安装方式是下载一个20MB的小包,下载后chmod +x 再运行,它会自动上网download全部内容并安装。 安装好的效果和在windows上几乎没差别
安装后,写个简单的程序。 新建qt gui application. 初始编译是生成本地代码即fedora9上的代码,界面像是这样



下面需要安装arm交叉编译器并指定arm的qmake。
设置参数:
第一步,
Tools->Options->Qt4->Qt Versions
加一个qmake location类似这样 /opt/Qt4.7/bin/qmake
第二步,左侧工具栏Projects->Build Settings 的Qt version选qt embbed 4.7.0. 然后点击那个锤子可以交叉编译了,生成了
helloqt4 这是我们的arm可执行文件了。不放心的话可以使用命令file helloqt4看到有arm字样就成功了
请注意有的时候如果不能正确生成交叉编译的文件,请先clean再rebuild all

接下来把helloqt4复制到ARM板的目录下比如/opt/Qt4.7/demos/embedded

4) 在ARM板上改QT配置文件

接下来就是改开机启动文件/etc/init.d/rcS 和 /bin/qt4配置文件
在/etc/init.d/rcS中加入:
echo "now executing /bin/qt4 file" > /dev/tty1
/bin/qt4
代表要执行qt4文件脚本,在这个文件脚本中既有qt4的本身环境变量设置,又有我们试验的要执行的交叉编译的文件helloqt4

a. 需要在/bin/qt4中间部分加入QT相关的变量设置
QTDIR=/opt/Qt4.7
PATH=$QTDIR/bin:$PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH LD_LIBRARY_PATH

b. 在/bin/qt4的尾部加入以下内容:
cd /opt/Qt4.7/demos/embedded
./helloqt4 -qws&
其中-qws参数很重要,代表的是启动qt windows server(因为没有象qtopia一样的图形支持环境)

注意把原来调用qtopia的几行脚本注释掉,以免和这个qte4.7冲突

5)在ARM板上reboot, 可以正确运行啦
显示我们的对话框helloqt4,按X号关闭后,退出了qt界面。
此时界面出现字符状态,并且串口终端激活了,可以按enter进行命令状态进行其它操作。当然,这样的步骤在正式产品上不能出现。所以是否看看不允许用户界面上出现关闭符号会比较好。
另外:由于屏幕及字体原因,有时候字体可能显示的特别小,这时候我们就需要精简qt的fonts目录,比如/opt/Qt4.7/lib/fonts里,只留住特定的字体比如unifont_160_50.qpf即可。其它的字体就不妨建个文件夹临时放进去,以备后用。

6)多任务的运行
补充:-qws是先开启一个qt windows server,然后运行应用程序。如果我们要先后运行2个程序,可以使用后台,即这样:
./helloqt4 -qws&
sleep 3
./another&
这样可以同时在后台运行多个应用程序,且串口终端也可以正常使用。就是非独占式。
为什么要使用sleep 3来延时3秒呢?经过实验,qws服务器有时候是不能立即启动的,需要点时间让它启动,这样后面的程序another才能找服务器,否则可能会提示错误。

7)后记
截止2011年6月9日,笔者把NOKIA官网上的最新的Qt4.7.3也完成了移植,移植过程和上面的Qt4.7.0几乎一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐