原创 qtopia-core-opensource-src-4.2.2移植但是没有QPE

2009-3-31 15:04 3686 4 4 分类: MCU/ 嵌入式

九、Qt移植(Qtopia<?XML:NAMESPACE PREFIX = ST1 />4.2.2)<?XML:NAMESPACE PREFIX = O />


1   Qt Qtopia 简介 (自己的理解,不对之处还请见谅)


    Qt特点是“一次编写,处处编译”。


Qt是在PC机上安装安装使用的;Qtopia Core 是基于嵌入式Linux的面向单一应用的嵌入式产品开发平台,即要移植到开发板上使用的;Qt/E是面向嵌入式系统的Qt版本,而Qtopia最初是构建于Qt/E之上的类似桌面系统的应用程序。


最初QtopiaQt/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 FRAMEBUFFER='/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 file: 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?


 


我直接创建了这个路径。


 

终以可以了。


 

比较乱,得再自己整理下。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条