QT4.3.2移植

QT4.3.2移植到FS2410

一、PC环境:

1.操作系统:Redhat5 ,主机编译器:gcc 4.1.2

2. 交叉编译器:cross-3.3.2.tar.bz2 (安装目录为:/usr/local/arm 交叉编译时出错)

注:可以使用网上下载的3.4.1交叉编译器。但最好使用与FS2410配套的3.3.2.

 

二、PCQT开发环境编译

将安装文件复制到目录/opt下解压

# tar –zxvf qt-x11-opensource-src-4.3.2.tar.gz

进入到该目录中:

# cd qt-x11-opensource-src-4.3.2/

设置编译环境:

# export QTDIR=$PWD      //QTDIR设置到当前目录

# export PATH=$QTDIR/bin:$PATH

# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

(在命令行下输入:env检查以上环境变量是否设置正确后再进行下一步)

进行编译,依次输入以下命令:

# ./configure

# yes

# gmake      //编译时间大概一个半小时

# gmake install  //默认安装到/usr/local/Trolltech

# cd tools/qvfb

# make

至此,QT4已安装完毕,其主要功能为提供虚拟帧缓冲(qvfb

编译工程:

建立一个文件夹“lzg”,放入上面4个源代码文件。在该目录里,终端输入以下命令进行编译:

# qmake –project   //生成工程文件

# qmake             //生成Makefile文件

# make              //编译程序

这时“lzg”文件夹内容如下图所示:

运行程序,在终端输入指令:./lzg

 

三、编译Qtopia

1.解压交叉编译器:cross-3.3.2.tar.bz2 /usr/local/arm目录下

2.使交叉编译器生效:export PATH=/usr/local/arm/3.3.2/bin:$PATH

   可使用以下命令查看:

注意:QT4要求的交叉编译器要3.2版本以上的。

3.  编译tslib-1.4.gz ,支持触摸屏功能

/opt目录下解压tslib-1.4.gz

#  tar  zxvf  tslib-1.4.gz

#  cd  tslib

#  ./autogen.sh      //生成config 文件

//避免检查ac_cv_func_malloc_0_nonnull

#  echo "ac_cv_func_malloc_0_nonnull=yes" >arm-Linux.cache   

//配置目标机、缓冲、安装路径

#  make    //编译
#  make install    //
安装
#  vi /home/tslib/etc/ts.conf

//修改文件,最终ts.conf内容如下(把所有的注释都删掉)

注意module_raw前不要有空格

 

4.       编译QT

/opt目录下解压qtopia-core-opensource-src-4.3.2.tar.gz

#  cd  qtopia-core-4.3.2

//修改源代码:mkspec/qws/linux-arm-g++/qmake.conf

#  vim  mkspec/qws/linux-arm-g++/qmake.conf

//分别包含触摸屏tslibinclude,lib,目的是为配置的QT库支持触摸屏功能,修改如下:

#  vim  src/gui/embedded/qmouselinuxtp_qws.h

//加上对触摸屏支持的宏定义,添加下面红线代码,如下:

#  vim  src/gui/embedded/qmouselinuxtp_qws.cpp

//把“/dev/h3600_tsraw 修改为了/dev/touchscreen/0。其中/dev/touchscreen/0FS2410平台LCD触摸屏的驱动文件,修改如下:(只需要修改红线部分即可)

//设置编译QT库的参数

主要配置选项解说如下:
-embedded arm -xplatform qws/linux-arm-g++ 
  
目标平台编译配置文件使用qtopiacore/qt/mkspecs/qws/linux-arm-g++目录下的配置文件,嵌入式平台为arm

-qt-sql-sqlite
数据库支持Sqlite

-qt-kbd-usb
键盘支持usb协议。

-no-kbd-tty

不支持终端。
-no-mouse-linuxtp -qt-mouse-tslib
触摸屏协议不支持linuxtp,支持tslib tslib的头文件和库已经在前面步骤加入QT库内。

#  gmake

#  gmake install

成功安装后,可以在/usr/local目录下,发现一个文件夹Trolltech

# cd /usr/local/Trolltech/QtopiaCore-4.3.2-arm/
目录结构如下:
bin  demos  doc  examples  include  lib  mkspecs  plugins  translations

//添加如下环境变量,使刚才安装QT库的qmake指令生效

export PATH=/usr/local/Trolltech/QtopiaCore-4.3.2-arm/bin:$PATH

至此,我们可以把刚才在PC机上开发的程序源代码交叉编译,生成能在FS2410平台上运行的二进制代码。指令步骤如下:

#  qmake –project

#  qmake

#  make

 

5.  编写下位机运行脚本

/usr/local/Trolltech 新建一个set.sh脚本

# vim  set.sh

//内容如下所示:(与挂载到下位机目录/mnt下有关)注,FS2410根目录没有mnt,所以下面要修改。

设置说明:

QTEDIRQT在下位机的位置

T_ROOT:触摸屏在下位机的位置

PATHQT库的编译指令qmake位置

TSLIB_CONSOLEDEVICE控制台设备文件名

TSLIB_FBDEVICE设备名

TSLIB_TSDEVICELCD触摸屏驱动文件(在数据测试中说明)

TSLIB_PLUGINDIR插件目录

TSLIB_CONFFILE配置文件名

TSLIB_CALIBFILE校准的数据文件

QWS_MOUSE_PROTO:针对tslib协议的LCD触摸屏驱动文件

LD_LIBRARY_PATHQT库和触摸屏库的位置

以上环境变量在实际开发中的实际配置可以根据实际情况决定

 

 

.  nfs 配置

PC机终端(Redhat5)运行如下指令:

1.  /etc/exports设置

#  vim  /etc/exports

//添加如下内容(红线部分所示)

主要解说如下:

PC机目录/usr/local/Trolltech挂载到目标机上。只能由IP地址是192.168.0.*的目标机访问,其中参数说明如下:

rw---读/写权限。

sync--数据同步写入内存和硬盘;

no_root_squash--此参数用来要求服务器允许远程系统以它自己的root特权存取该目录;就是说如果用户是root,那么他就对这个共享目录有root的权限。

//生效刚才的设置

# source  /etc/exports

如果出错下面错误:

[root@localhost lzg]# source /etc/exports

bash: /etc/exports: line 1: syntax error near unexpected token `('

bash: /etc/exports: line 1: `/usr/local/Trolltech 192.168.176.*(rw,sync,no_root_squash)'

则在()前后加”,"(rw,sync,no_root_squash)"就不会报错了.

//重启nfs服务

2.       PC ping 目标机:测试网络是否连通.

使用ifconfig查看,使用ifconfig eth0设置IP.

PC(redhat)和目标机前三段IP要一致.(不用管XPIP,只需要比较redhat和目标机的IP)

3.       进行目标机终端:

mount -t nfs -o nolock 192.168.176.232:/usr/local/Trolltech /tmp

出现如下错误:

mount: RPC: Unable to receive; ernfs warning: mount version newer than kernel

NFS: mount program didn't pass remote address!

rno = No route to host

mount: nfsmount failed: Bad file descriptor

mount: Mounting 192.168.176.232:/usr/local/Trolltech on /tmp failed: Invalid arg

ument

确保PC的虚拟机能ping通目标机(第二步).如果还出现上面错误时,看是否已经关闭防火墙.

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值