qt移植

来源:互联网 发布:sqlserver自增列 编辑:程序博客网 时间:2024/05/02 00:43

 http://blog.21ic.com/user1/5644/archives/2009/57035.html

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 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?

 

我直接创建了这个路径。

 

终以可以了。

 

比较乱,得再自己整理下

原创粉丝点击