您的位置:首页 > 服装鞋帽 > 男装 > qt程序移植全过程

qt程序移植全过程

luyued 发布于 2011-01-04 07:35   浏览 N 次  
硬件平台:扬创YC2440 OS:ubuntu 8.04 software:qt3
这么久了,终于成功将qt3程序移植到arm板子上去了。情不自禁记录此文,恭贺恭贺!同时记录下方便以后的学习研究.首先明白一点,所谓qt能跨平台运行是指我们在用相同的源程序,不同的编译器编译生成不同体系的可执行文件,这些可执行文件可以分别运行在不同的平台上.简单的举个例子说就是:我们用x86体系的qt 编译运行在x86体系的pc机上(如我们常说的计算机)的程序,用arm体系的qt编译运行在arm上的程序,只不过我们通常是在pc机上建立交叉编译器来编译arm的可执行文件.

说明:qt4尚未移植成功,本文仅针对qt3.移植到扬创公司的utulinux平台
一.先建立好PC机上的开发环境
1. 建立pc机上的qt
apt-get install qt3-*
此为pc机的x86体系的qt环境,安装完成后可以直接qmake,designer等
2.建立交叉编译的qt环境
(1)首先安装arm-linux-gcc(3.3.2版本).可以自己到网上搜索这个源,解压了设置一下环境变量就可以直接用了,注意:以root身份登录,sudo -s可以切换到root
mkdir /usr/local/arm
tar -xjvf arm-linux-gcc.tar.bz2 -C /
vi /etc/bash.bashrc
加上这句:PATH=$PATH:/usr/local/arm/3.3.2/bin,保存退出. 重启终端输入arm-linux-gcc -v可以检测arm-linux-gcc是否建立好.
(2)安装嵌入式qt(同样root身份)
源码包:qtopia-1.7-tp.tar.bz2
mkdir /utulinux
cp qtopia-1.7-tp.tar.bz2 /utulinux
cd /utulinux
tar xjvf qtopia-1.7-tp.tar.bz2
rm xjvf qtopia-1.7-tp.tar.bz2
cd qtopia-1.7-tp/

. build(注意.后有一个空格)
注意这一步:编译到一半的时候会有提示说错误,找到qtopia-free-1.7.0/src/3rdparty/libraries/libavcodec下的Makefile文件,打开,可以看到里面有三个-e,把那三个-e删了保存。然后直接在qtopia-free-1.7.0/src下make 就行了.
OK!编译完成之后就装好了,运行的时候设运行它里面的脚本. setenv.然后可以开始编译程序了

OK!做到这一步,基本的那些编程环境已经构建好了,让我们来做个联系:
下载下面的源代码:
文件:hello.tar.bz2
大小:11KB
下载:下载
解压进入目录:
1.pc机上运行:
cd /[源程序所在目录]
qmake -project
qmake
make
./hello
就可以运行了
2.arm上运行:首先进入/utulinux/qtopia-1.7-tp设置环境变量
cd /utulinux/qtopia-1.7-tp
. setenv
cd /[源程序所在目录]
progen -t app.t -o hello.pro
tmake -o Makefile hello.pro
make
vi hello.desktop
(vi指令 i是编辑文件 Esc退出编辑状态 :W 保存 :q退出)
加上:
[Desktop Entry]
Comment=An Example Program
Exec=hello "可执行文件名
Icon=hello "图标名
Type=Application
Name=hello "可执行文件名

保存退出

ls就可以看得到可执行文件,但是不能在pc机上运行,因为这是用arm-linux-gcc编译的,是
基于arm体系的,我们需要把它传送到arm板子上去才能运行.OK!下一步:搭建minicom+nfs
安装minicom:
apt-get install minicom
完成后设置minicom,参数如下:
minicom -s
A - Serial Device : /dev/ttyS0
B - Lockfile Location : /var/lock
C - Callin Program :
D - Callout Program :
E - Bps/Par/Bits : 115200 8N1
F - Hardware Flow Control : No

G - Software Flow Control : No
保存退出:
剩下的一些配置可以参考我的另外一篇blog:
http://blog.chinaunix.net/u2/86708/showart_1871067.html
开始共享,传输:
1.串口连接arm和pc(必不可少,否则minicom无法正常工作)
2.minicom(不出意外的话,就可以看得到arm板的东西了)
3.连接网线
4.编写nfs的脚本(首先确认网线已经连接好)
vi nfs_ini.sh
ifconfig eth0 xxx.xxx.xxx.xxx netmask 255.255.255.0 broadcast xxx.xxx.xxx.254 up
mount -t nfs -o nolock -o tcp [pc机的IP]:/[pc机上要共享的目录] /[arm上共享目录]

(注:我们将nfs的协议改为tcp协议,否则有时较大文件无法copy)
保存退出
5.source nfs_ini.sh(或则给它加上可执行权限,直接执行也可以)
6.cd /[pc机上要共享的目录]
cp hello /opt/qtopia/bin
cp hello.desktop /opt/qtopia/apps/Applications
7.reboot 重启arm
然后你可以看得到一个图标,点击运行,即可!
Good luck!
广告赞助商