Qt移植(Qtopia4.2.2)

2019-07-13 06:34发布

QT 2009-04-22 17:06:20 阅读266 评论0   字号: 订阅 1   Qt 和 Qtopia 简介 (自己的理解,不对之处还请见谅)     Qt特点是“一次编写,处处编译”。 Qt是在PC机上安装安装使用的;Qtopia Core 是基于嵌入式Linux的面向单一应用的嵌入式产品开发平台,即要移植到开发板上使用的;Qt/E是面向嵌入式系统的Qt版本,而Qtopia最初是构建于Qt/E之上的类似桌面系统的应用程序。 最初Qtopia和Qt/E是两种不同的程序,但从版本4.1以后,将Qt/E并入了Qtopia,改称为Qtopia Core。 接下来要进行的Qt移植就是指对Qtopia Core的移植,我们的版本是Qtopia4.2.2,即对其库的移植。移植的步骤是这样的,首先在PC机上安装Qtopia4.2.2,然后把其中的库放入我们制作的根文件系统的/lib之中,最后设置环境变量。以下为详细内容:     2   下载Qtopia Core 4的源代码,建议到www.qtopia.org.cn下载, qtopia-core-opensource-src-4.2.2.tar.gz,解压 # tar zxvf qtopia-core-opensource-src-4.2.2.tar.gz # cd qtopia-core-opensource-src-4.2.2 # ./configure -embedded arm -xplatform qws/linux-arm-g++ -depths  4,8,12,16 -no-qt3support  # gmake  (这个过程最漫长...) # gmake install  (需root 权限) 设置Qt的环境变量,修改$HOME/.bash_profile 加入 # vi $HOME/.bash_profile     添加 PATH=/usr/local/Trolltech/QtopiaCore-4.2.2-arm/bin:/usr/local/Trolltech/Qt-4.2.2/bin:$PATH     后面的是Qt for X11的环境变量设置,执行使立即生效 # source $HOME/.bash_profile # echo $PATH # which qmake //可查看已经添加成功   3   把qtopia-core-opensource-src-4.2.2的库放入制作的根文件系统的/lib之中     安装好的Qtopia在目录/usr/local/Trolltech/QtopiaCore-4.2.2-arm下,进入其目录。可以看到/lib文件,其中包括一个fonts文件夹,里面是一些字体,内容很多也很占空间(72M左右),因为我们的目标板一般flash很小,64M左右,所以我们只选用很常用或者自己觉得好看的字体放入。 首先在/建立一个文件夹——Qtopia,里面存放入库和字体文件的fonts文件夹, # cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm # mkdir Qtopia 然后把/lib下的文件复制到其中 # cp –arf  /usr/local/Trolltech/QtopiaCore-4.2.2-arm/lib/*   /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia     删掉多余的字体文件 # cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia/fonts     只留下cour.pfa 和 cursor.pfa     最后把Qtopia拷贝到刚刚我们做好的文件系统的/lib下面 # cp –arf /usr/local/Trolltech/QtopiaCore-4.2.2-arm/Qtopia  /rootfs/lib   4         设置环境变量 在文件系统中,关键要设置环境变量,才能让Qt4的程序找到我们移植的Qt4的库,真正跑起来。设置环境变量可分两种,与PC机上一样,可以在命令行下设置,还有一种方法是在/etc/profile文件中设置,让开发板一启动就自动设置,添加命令如下: PATH=/usr/bin:/usr/sbin:$PATH:./ export BUFFER='/dev/fb/0' export TSDATAFILE='/mnt/yaffs/minigui/tsdata.dat' export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/lib/Qtopia:$LD_LIBRARY_PATH export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0" 关键是LD_LIBRARY_PATH,这个设置让系统知道Qt的库的位置,即/usr/lib/Qtopia,还有一个关键是QWS_DISPLAY,因为我们在运行程序时,有一个参数是qws,例如:./analogclock –qws ,设置好QWS_DISPLAY后才能在显示屏上显示按我们要求比例大小的图像。   5         测试代码 进入/usr/local/Trolltech/QtopiaCore-4.2.2-arm/examples/tutorial/t1 # cd /usr/local/Trolltech/QtopiaCore-4.2.2-arm/examples/tutorial/t1 # qmake -project # qmake # make     生成二进制文件t1,通过适合的方式拷贝到文件系统中,执行 ./t1 –qws 可以显示 helloworld   http://blog.csdn.net/mimimomo/archive/2008/05/14/2443593.aspx   出错……没道理需要这个库呀……libstdc++.so.6 [root@Qiu /mnt]# ./t1 -qws ./t1: error while loading shared libraries: libstdc++.so.6: cannot open shared object No such file or directory   如提示缺失libstdc++.so.6等库文件,可从/usr/local/arm/3.4.1/arm-linux/lib复制过来。 其他的库也是一样,我之前做lib的时候可能没做好。   最后一个问题就是刚才提到的字体问题。网上的教程都是说将fontdir放到$QTDIR/lib/fonts目录下即可。但我编译的这个版本总不行,提 示 Cannot find font definition file /usr/local/Trolltech/QtopiaCore?   我直接创建了这个路径。