九、Qt移植(Qtopia4.2.2)(转载文章)
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的源代码,建议到
[url=http://www.qtopia.org.cn/]www.qtopia.org.cn[/url]
下载, 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
十、Qt4编程(fc6—使用KDevelop联合开发)[/b]
1 Qt/X11的安装
下载Qtopia Core 4的源代码,建议到
[url=http://www.qtopia.org.cn/]www.qtopia.org.cn[/url]
下载, qt-x11-opensource-src-4.2.2.tar.gz,解压
# tar xvzf qt-x11-opensource-src-4.2.2.tar.gz
# cd qt-x11-opensource-src-4.2.2
# ./configure
# make
# su –c “make install”
设置Qt的环境变量,修改$HOME/.bash_profile
加入
# vi $HOME/.bash_profile
添加
PATH=/usr/local/Trolltech/Qt-4.2.2/bin:/usr/local/Trolltech/QtopiaCore-4.2.2-arm/bin:
$PATH
执行使立即生效
# source $HOME/.bash_profile
# echo $PATH
# which qmake
//可查看已经添加成功
2
fc6下使用KDevelop开发Qt4
在安装fc6时使用全部安装,特别是开发软件的安装,就默认带KDevelop3.3.4
(1) 启动KDevelop
KDE/C++
(2) 选择工程 | 新建工程 | 显示全部工程模版 | QMakeProject | Qt4 Application
| 输入工程名 | 默认下一步
(3) 工程 | 工程选项 | C++特点设置 | Qt | 选定
Enable Qt options | 选择Qt4 | 选择Qt4的路径(即QMake Binary 和
Designer Binary)
(4) 分别执行“构建”“编译”“执行”3步
使用KDevelop开发Qt4,完全要靠输入代码完成,工作量大,一些工作易重复或加大工作量,所以推荐下面这种方法:KDevelop与Qt4的Qt
Designer联合开发
3 KDevelop与Qt4的Qt Designer联合开发(推荐)
(1)用Qt Designer设计出.ui文件,比如工程文件位置为/root/hello/hello.ui
(2)进入工程目录进行编译
# cd
/root/hello
//生成ui_hello.h头文件,以备后面开发之用,我们写的程序依靠此文件
# uic –o ui_hello.h hello.ui
# qmake –project
# qmake
(3)启动KDevelop
KDE/C++, 选择 Project | Import Existing Project
选择我们刚才在生成的/root/hello/hello.pro文件,把文件导入KDevelop
(4)书写main.cpp文件及需要的其他文件完成编辑工作。main.cpp和其他文件的书写很有讲究,这里不再详述,请参考Qt4的帮助文档。
PS[/b]:vivi设置[/b]
1 SBC2410x的VIVI已经被友善之臂自动加入了USB功能,这个小功能省去了我们很多麻烦。所以建议大家先把板子的USB驱动装上。
重新分区
分区名称
分区大小
vivi
128k
param
64k
kernel
3M
root
40M
user
15M
在vivi命令行下输入如下命令
part show
然后输入:
part del
参数name为各个显示分区的名字,一直到把所有分区都删除为止,然后依次输入:
part add vivi 0x0 0x20000 0
part add param 0x20000 0x10000 0
part add kernel 0x00100000
0x00300000 0
part add root 0x00400000
0x02800000 0
part add user 0x02d00000 0x00f00000 0
part save
现在分区就已经完毕了。
vivi的分区一定要与内核里的分区设置一致,即与arch/arm/machs3c2410/devs.c里static struct mtd_partition
partition_info[]分区一致,至少是kernel后的地址一致,这个需特别注意。
2 设置启动参数
执行:
param show
就可以见到你现在的所有VIVI参数,其中linux command line为传递给linux内核的启动参数。因2.4与2.6在参数方面有变动,所以输入如下命令:
param set linux_cmd_line “noinitrd root=/dev/mtdblock3
init=/linuxrc console=ttySAC0,115200”
param save