Qt移植(Qtopia4.2.2)

2019-07-13 04:20发布

九、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