redhat9下安装qt-4.3.x及qtopia-4.3.x 让你的QT飞起来

在安装之前先说明一下qtqtopia的区别:qt是用来在主机上编译及运行的;而qtopia是在qt/embedded的基础上开发的一个应用环境,相当于qt/embedded的集成开发环境,这个环境为手持和移动设备开发的 (相信大家都知道,简单说明一下)

首先我们要知道的是Qt平台有Pc开发平台,(以本人所装的Redhat9linux/Qt4.3.0/arm-3.4.1版本为例)

Qt嵌入式开发平台的建立

概述:Qt嵌入式开发平台包括:

1Qt-X11开发平台:(即为我们平时开发Qt应用程序时使用的系统平台)。

2QtopiaCore-4.3.0开发平台(即framebuffer):该平台可以让Qt程序在pc机上模拟在嵌入式平台的运行情况,一般在QtopiaCore上模拟运行成功后才,进行交叉编译。

3QtopiaCore-4.3.0-arm交叉编译平台:在此平台下编译通过的Qt程序就可以移植到arm板上运行了。

下载源码:

qt-x11-opensource-src-4.3.0.tar.gz  qtopia-core-opensource-src-4.3.0  linux-gcc-3.4.1.tar.bz2

一、首先安装交叉编译器Qtopia Core 4指明要3.2以上的版本。

1  #tar xjvf linux-gcc-3.4.1.tar.bz2

2)设置交叉编译的环境变量,在终端:

#export PATH= /usr/local/arm/usr/local/arm/3.4.1/bin:$PATH

或:在root

#vi compiler

 export PATH= /usr/local/arm/usr/local/arm/3.4.1/bin:$PATH

.compiler

3)查看编译器版本:

#arm-linux-gcc –v

二、安装QT4:

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

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

进入到该目录中:

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

设置编译环境:

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

     # export PATH=$QTDIR/bin:$PATH

     # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

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

因为在编译时要用到文件krb5.h,而Red Hat Linux krb5-devel 套件把 kerberos include file 放到了 /usr/kerberos/include 里面,而不是一般位置的 /usr/include/openssl 这个目录,因此要进行软连接:

        ln -s /usr/kerberos/include/com_err.h /usr/include/openssl

        ln -s /usr/kerberos/include/profile.h /usr/include/openssl

        ln -s /usr/kerberos/include/krb5.h /usr/include/openssl

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

       # ./configure

       # yes

       # gmake

       # gmake install

       # cd tools/qvfb

       # make

make --会在qt-x11-opensource-src-4.3.0/bin下生成qvfb,我们将它copy/usr/local/Trolltech/ QtopiaCore -4.3.0-x86/bin

cp ../..bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin

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

安装好后,系统默认安装在/usr/local/Trolltech/Qt-4.3.0目录下

   检查环境变量:

   #which qmake  

三、安装Qtopia Core 4  (这个应该是安装x86构架)

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

      # tar –zxvf qtopia-core-opensource-src-4.3.0

      # cd qtopia-core-opensource-src-4.3.0

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

      # export PATH=$QTDIR/bin:$PATH

      # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

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

因为基本上所有的开发板都是带触摸屏的,所以要让源代码支持,实际上就是加上2个宏定义:

打开qtopia-core-opensource-src-4.3.0/src/gui/embedded/qmouselinuxtp_qws.h

          加上这2行:#define QT_QWS_IPAQ

                      #define QT_QWS_IPAQ_RAW

 还有需要注意的地方是:看一下 qmouselinuxtp_qws.cpp /dev/h3600_tsraw, 是不是你板子上的驱动文件名字,如果不是改成一样就可以了。

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

 (1)  # ./configure –embedded x86 –depths 4,8,16,32 –qconfig full –qvfb -qt-libjpeg -qt-libpng -qt-gif

      # gmake

     # gmake install

   至此,QTopia也已安装完毕,其主要的功能为提供编译及模拟环境

安装完后,会在目录/usr/local/Trolltech/下面各生成一个目录:QT-4.3.0Qtopia-Core-4.3.0QTopia 的库文件就在其子目录lib

(2) 建立QtopiaCore-4.3.0编译平台(此时编译器仍然用的是默认的gcc

   此平台下的安装包原码包和X11平台是一样的,只是configure时配置不同

   #tar xzvf qt-x11-opensource-src-4.3.0.tar.gz

   #cd Qt-4.3.0

   #./configure -embedded x86 -qvbf -no-openssl  //注意几个选项表示,以qvfb表示    -no-openssl表示不需要认证,否则会安装过程中一直叫你输入yes确认

   #make install         //此过程需要3-8个小时

   安装完成后usr目录多了一个文件夹/usr/local/Trolltech/QtopiaCore-4.3.0就表示安装成功了

 (3) QtoptiaCore-4.3.0-arm交叉编译平台的建立(此时不是用系统默认的gcc来编译了)

   此平台下的安装源码包X11平台是一样的,只是configure时配置不同

   #tar xzvf qt-x11-opensource-src-4.3.0.tar.gz

   #cd Qt-4.3.0

   #./configure -embedded arm   //注意几个选项,必须加上 -embedded arm选项

   #make install         //此过程需要3-8个小时

   安装完成后usr目录多了一个文件夹/usr/local/Trolltech/QtopiaCore-4.3.0-arm就表示安装成功了

另一种安装方法:在/qtlinux中新建一个文件夹,在这个文件夹中交叉编译安装arm构架

比如:在实际操作时请根据实际情况选择正确的路径名,在此引用变量名只是为了说明的方便,请务必将后文中的下述变量用实际的路径名代替)

$src_qtopiacore_arm=/qtlinux  解压qtopia-core-opensource-src-4.3.0源代码所在目录

$instal_qtopiacore_arm = /qtlinux/ qtopia-core-opensource-src-4.3.0-arm 交叉编译生成的基于armQT库及编译工具安装目录

$src_qtopiacore_arm目录下解压源代码

# tar zxvf qtopia-core-opensource-src-4.3.0.tar.gz

下一步是编译,先别忙,源代码有需要该的地方,因为基本上所有的开发板都是带触摸屏的,

所以要让源代码支持,实际上就是加上2个宏定义,很简单的。

打开qtopia-core-opensource-src-4.3.3/src/gui/embedded/qmouselinuxtp_qws.h

加上这2行:#define QT_QWS_IPAQ

            #define QT_QWS_IPAQ_RAW

还有需要注意的地方是:看一下 qmouselinuxtp_qws.cpp /dev/h3600_tsraw, 是不是你板子上的驱动文件名字,如果不是改成一样就可以了。

# cd qtopia-core-opensource-src-4.3.5

#./configure

-embedded arm

-xplatform qws/linux-arm-g++

-depths 4,8,16,32

-no-qt3support

-little-endian 

-prefix  $instal_qtopiacore_arm

-no-mouse-linuxtp -qt-mouse-tslib -I/opt/tslib/include -L/opt/tslib/lib

(触摸屏协议不支持linuxtp,支持tslib,并在后面添加上刚才编译的tslib的头文件和库)

# make           时间会比较久

# make install      软件会安装在 设置的-prefix  $instal_qtopiacore_arm目录下,默认是在/usr/local/…下,要求保证安装目录空间的充足,大约200M

最终在 $instal_qtopiacore_arm下生成 /bin /lib等等目录和文件。

其中 bin 下的qmake 用于编译生成基于ARM上的QT程序

例如:

(编译生成基于ARM上的QT程序)

打开linux在终端依次输入以下命令:

# export QTEDIR=$instal_qtopiacore_arm #QTEDIR设置到

$instal_qtopiacore_arm目录

# export PATH=$QTEDIR/bin:$PATH

# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

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

终端下输入以下命令进行编译QT程序。最终生成的程序可用file 查看文件属性

# qmake project /生成工程文件

# qmake

# make

 

注意相关的配置(安装的版本):

选项

-qconfig local  -> qconfig-local.h

minimal-> qconfig-minimal.h

medium-> qconfig-medium.h

dist-> qconfig-dist.h

small-> qconfig-small.h

large-> qconfig-large.h

cp ./src/corelib/global/qconfig-medium.h ./src/corelib/global/qconfig-local.h

-depths 4, 8, 16, 18, 24, and 32

qvfb的版本

# ./configure -silent -release  -prefix /mnt/nfs/qtopia4/qtopiatslibtarget -xplatform qws/linux-arm-g++ -embedded arm -qconfig local -qt-sql-sqlite -depths 16,32 -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp -qt-mouse-tslib -I/mnt/nfs/tslib1.4-install/include -L/mnt/nfs/tslib1.4-install/lib   2>../qtopiaconfgureERR.txt

不用qvfb的版本

# ./configure -silent -release  -prefix /mnt/nfs/qtopia4/qtopiatslibtarget -no-qvfb  -xplatform qws/linux-arm-g++ -embedded arm -qconfig local -qt-sql-sqlite -depths 16,32 -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp -qt-mouse-tslib -I/mnt/nfs/tslib1.4-install/include -L/mnt/nfs/tslib1.4-install/lib   2>../qtopiaconfgureERR.txt

完全安装不要qt3支持

 ./configure -silent -release  -prefix /mnt/nfs/qtopia4/qtopiatslibtarget -no-qvfb -xplatform qws/linux-arm-g++ -embedded arm  -no-qt3support -qt-sql-sqlite -depths 16,32 -qt-kbd-usb -no-kbd-tty -no-mouse-linuxtp -qt-mouse-tslib -I/mnt/nfs/tslib1.4-install/include -L/mnt/nfs/tslib1.4-install/lib   2>../qtopiaconfgureERR.txt

去掉tslib, 键盘鼠标的定义

 ./configure -silent -release  -prefix /mnt/nfs/qtopia4/qtopiatslibtarget -no-qvfb -xplatform qws/linux-arm-g++ -embedded arm -little-endian -no-qt3support -qt-sql-sqlite -depths 4,8,16,24,32

 ./configure -silent -release  -prefix /mnt/nfs/qtopia4/qtopiatslibtarget -no-qvfb -xplatform qws/linux-arm-g++ -embedded arm -little-endian -no-qt3support -qt-sql-sqlite -depths 4,8,16,32

//arm

./configure -silent -release  -prefix /mnt/nfs/qtopia4/qtopiatslibtarget -no-qvfb -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-gfx-linuxfb -no-qt3support -qt-sql-sqlite -depths 4,8,16,24,32

//x86

./configure -silent -release  -prefix /mnt/nfs/qtopia4/qtopiatslibhost -qvfb -xplatform qws/linux-x86-g++ -embedded x86 -little-endian -qt-gfx-linuxfb -no-qt3support -no-openssl -qt-sql-sqlite -depths 4,8,16,24,32

gmake

//To reconfigure, run 'gmake confclean' and 'configure'.

gmake confclean

gmake install

# make

# make install     //安装到“/mnt/nfs/qtopia4/qtopiatslibtarget”下

四、启动qtopia

打开linux终端,并在终端依次输入以下命令:

   # export QTDIR=/usr/local/Trolltech/QtopiaCore-4.3.0-arm  /QTDIR设置到QTopia目录

   # export PATH=$QTDIR/bin:$PATH

   # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

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

  这样就可以使用qtopia

如果要使用qt4只要改变环境变量即可。

   # export QTDIR=/qtlinux/qt-x11-opensource-src-4.3.0/ /QTDIR设置到QTopia目录

   # export PATH=$QTDIR/bin:$PATH

   # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

五、 在此终端下,进入到工作目录(例如/work,可自行拟定),准备编译所编写的文件,一般来讲,该工作目录下面应该包括.cpp, .h, ui格式的文件。

终端下输入以下命令进行编译:

     # qmake project   /生成工程文件

     # qmake

     # make

安装好环境之后:

1:

   设置环境变量:环境变量的设法总的说来有4种(exportprofile.bashrc.bashrc_profile)具体看自己情况来定

   #vi /root/.bash_profile  //在环境变量的最前面加上一句:PATH=/usr/local/Trolltech/QtopiaCore-4.3.0-arm/bin:$PATH

   #source /root/.bash-Profile   //使环境变量生效

 好了平台已经搭建好了,可以用他来编译Qt程序了

2):

   QtopiaCore-4.3.5-arm来进行交叉编译

   #qmake -v  //检查自己的qt环境变量是否正确,如果不正确的话,就返回第4

   #cd myqtprogram   //进入自己写的qt程序

   #qmake -project   //QtX11环境一样编译

   #qmake

   #./myqtprogram    //运行程序

3):

   察看自己写的Qt程序需要用到哪些库文件资源。

   #arm-linux-readelf -a -myqtprogram | grep Shared  //Shared首字母大写;

4):

   拷贝库文件:

   根据上一步提示把Qt程序要用到的资源文件拷到自己制作的根文件系统中,以下是按本人写的Qt程序所需要的库写的

   将程序移植到arm板运行,根文件系统root.cramfskernel的制作在这里就不细说了,本人用的是自己早做好的qt-root文件系统。

   拷贝库文件到自己制作的root系统中(注意:拷贝时一定要看看大小,千万不要拷到连接文件(相当于快捷方式)了)

   #cd qt-root

   #cd usr/lib    //注意这里不要进到pclinuxusr目录下去了

   #cp /usr/local/Trolltech/QtopiaCore-4.3.0-arm/lib/libpng*  ./                  //把图形库考过去,否则图片显示不了,强烈建议用pngbmp格式的图片,用其他格式的图片的话,否则你还要自己做连接库

   #cp /usr/local/Trolltech/QtopiaCore-4.3.0-arm/lib/libQtCore.so libQtGui.so  ./     //2个库不用说一定要考的

   #cp /usr/local/Trolltech/QtopiaCore-4.3.0-arm/lib/libQtNetwork.so  ./           //和网络相关的库

   #cp /usr/local/Trolltech/QtopiaCore-4.3.0-arm/lib/libstdc++.so  ./

   #cd ../    //以下是在根文件系统qt-root/usr/local/下制增加一个Trolltech/QtopiaCore-4.3.0-arm/lib/fonts路径目录并添加相应的字体文件,否则在arm板上会出错显示不了字

   #mkdir local/Trolletch

   #mkdir local/Trolletch/Qtopia-4.3.0-arm

   #mkdir local/Trolletch/Qtopia-4.3.0-arm/lib

   #cp /usr/local/Trolltech/QtopiaCore-4.3.0-arm/lib/fonts local/Trolletch/Qtopia-4.3.0-arm/lib  //注意不要拷错路径了

5:

   把程序下载到arm板运行(注意:本人是用的microsoft的附件/通讯工具/超级终端连接到板子上,以下的操作对象都是在板子上了)

   #./ln -s /dev/fb/0 /dev/fb0  //由于本人的板子上烧的root文件系统显示设备名称和路径都不匹配,所以只有给他做个连接了,否则运行时会提示找不到fd0

   #./myqtprogram -qws   //-qws表示以服务器模式运行

   ok能在板子上跑起来

另一种方法:

  目标板

(文件系统及环境变量的配置)

1.   开发板文件系统中添加库

开发板文件系统要主机上建立/nfsrootfs/下,以下所有操作都是在些目录下完成

1)         复制$instal_qtopiacore_arm/ lib

建立/nfsrootfs$instal_qtopiacore_arm(这个目录必须和主机安装基于arm Qtopia Core 4时的配置中的-prefix $instal_qtopiacore_arm一致)

复制 主机中的$instal_qtopiacore_arm /lib 及所有文件到些目录下。(注意lib/fonts中的文件较多,主要是一些字体库,可以去掉对自己没有用到的字体库)

2)         复制tslib的库 和文件

分别把编译tslib后生成的/lib (里面有tslib的库)/etc (里面有ts.conf /bin(ts_xx 等等可执行文件)目录中的文件复制到开发板文件系统中,既 /nfsrootfs/lib /nfsrootfs/lib /etc   /usr/bin

进行一次清理操作

#arm-linux-strip lib/*.so

#arm-linux-strip usr/lib/*.so

2. qte启动脚本中qpe.sh

 #export PATH=$instal_qtopiacore_arm/ bin:$PATH

#export LD_LIBRARY_PATH=$instal_qtopiacore_arm/lib:$LD_LIBRARY_PATH

#---------------------------------

export QWS_MOUSE_PROTO= "Tslib:/dev/event0" 

/*这一句很重要,如果你编译的时候选择

Tslib那么这里必须为Tslib,如果没有指定Tslib那么这里应该设定为LinuxTP:/dev/event0

/dev/event0 为触摸屏设备名称*/

export POINTERCAL_FILE=/etc/pointercal        *这一句也是必须,告诉QTOPIA:pointercal文件在哪里,由ts_calibrate校验触屏生成,用于校正*/

export QWS_DISPLAY="LinuxFb:mmWidth45:mmHeight35:0"

export QWS_SIZE=640x480

#---------------------------------

export TSLIB_TSDEVICE=/dev/event0      #触摸屏设备文件名

export TSLIB_CALIBFILE=/etc/pointercal   #校准数据文件,由ts_calibrate 生成

export TSLIB_CONFFILE=/etc/ts.conf      #配置文件

export TSLIB_CONSOLEDEVICE=none    #控制台文件

export TSLIB_FBDEVICE=/dev/fb0        #设备名

export TSLIB_PLUGINDIR=/usr/lib/ts      #插件目录

#----------------------------------

ts_calibrate          # ts_calibrate校验触屏,生成/etc/ pointercal

if [ -f "$TSLIB_CALIBFILE" ]; then

./qpe -qws &

else

$TS_ROOT/bin/ts_calibrate

./qpe -qws &

fi

好了,mkyaffs2image 制作镜像,烧写镜像,启动

,运行一个qte程序试试看

 

本文已经能在我的PC机上顺利安装,文章参考了许多网友的文章,才综合总结如上

 ,如果有错请各位大虾指点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值