QT4.5.3移植到mini2440,tiny6410 .

平台:fedora(完全安装版)完全安装在后面的编译过程中才会很少因为确实库而出问题。

编译器:mini自带的 4.3.2

开发板:mini2440(nand128M)

第一步:准备源码包

从ftp://ftp.qt.nokia.com/qt/source/ 下载:qt-embedded-linux-opensource-src-4.5.3.tar.gz和

qt-x11-opensource-src-4.5.3.tar.gz

第二步: 编译安装QT-X11-4.5.3

QT-X11-4.5.3是运行于linux平台下用于仿真QT应用程序的软件,这样你便可以在linux平台下把你应用程序都调试好,然后再利用QT4.5.3把应用程序编译成ARM版本下载至开发板,这样你就可以在开发板上运行你的QT应用程序了。

首先将qt-x11-opensource-src-4.5.3.tar.gz 拷贝到Fedora9下的/home目录下

注意:编译安装QT的过程中最长出现的问题,就是硬盘上没有多余的空间了。编译安装完qt大概需要10~20G的虚拟机空间。所以在创建虚拟机的时候,把/ 目录分为10G,/home 目录分为15G,这样就可以避免这个问题。

接着执行

  1. #tar zxvf qt-x11-opensource-src-4.5.3.tar.gz  
  2. #cd qt-x11-opensource-src-4.5.3  
  3. #./configure  
  4.     #gmake      //一般用时2-3小时,如果你的机子配置不太低的情况下  
  5. #gmake install 

安装完成后,

安装OK后,在/usr/local/目录下生成Trolltech目录,这就是我们要用于在x86平台(Fedora9)下开发应用程序时所依赖的一些目录。现在你可以进入/usr/local/Trolltech/Qt-4.5.3/examples下,进入一个例子,比如进入/usr/local/Trolltech/Qt-4.5.3/examples/widgets/analogclock下,你会发现,这个例子都已经编译好了,在Fedora9的终端下直接运行:

 

 
 
  1. #./analogclock –qvfb  

则在Fedora9的屏幕上出现下图:

Qt移植学习之路 QT4.5.3至mini2440

接着设置一下QT-X11-4.5.3的环境变量。

注意2:这里很重要,因为如果你的环境变量设置的有问题的话,会发生很多莫名其妙的错误。

由于我们的fedora9.0 是完全安装的所有,在系统里是装有一个qt-3.3的,由于环境变量的优先级使得我们后面设置的环境变量没有起到作用,

所以环境变量设置方法如下。

在/etc/profile中添加如下信息

 export QTDIR=/usr/local/Trolltech/Qt-4.5.3/
    export QTINC=/usr/local/Trolltech/Qt-4.5.3/include/
    export QTLIB=/usr/local/Trolltech/Qt-4.5.3/lib
    export QTINC=/usr/local/Trolltech/Qt-4.5.3/include
export PATH=:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/4.3.2/bin:/usr/local/Trolltech/Qt-4.5.3/bin:/usr/local/Trolltech/Qt-4.5.3/mkspecs:/root/bin

保存退出,在终端执行:

 

 
 
  1. #source /etc/profile

 

 
 
  1. #echo $QTDIR 

终端回显:/usr/local/Trolltech/QT-4.5.3 ――――――说明:环境变量设置成功

接着我们自己编写一个最简单的QT程序,hello world

  1. #cd qt-x11-linux-opensource-src-4.5.3/ /opt/qt-x11-opensource-src-4.5.3/examples/  ::这里很重要一定要在这个目录下否则会出错误。
  2. #mkdir hello  
  3. #vi hello.cpp   

然后把下列源程序COPY到hello.cpp中。

#include <QApplication>  
#include <QPushButton>
 int main(int argc, char *argv[]) 
      { 
           QApplication app(argc,argv); 
           QPushButton b("Hello World !"); 
              b.show(); 
              QObject::connect(&b,SIGNAL(clicked()),&app,SLOT(quit())); 
               return app.exec(); 
        }

  1. # qmake –project (产生hello.pro文件)  
  2. #qmake            (产生Makefile文件)  
  3. #make              (执行Makefile以生成可执行程序) 

接着就会出现下面这张图片

Qt移植学习之路 QT4.5.3至mini2440

 

第三步:编译安装QT4.5.3

首先我们建立两个目录用来存放接下来编译出来的一些目标文件,在Fedora9的根目录下建立mini2440 和 tslib两个目录,终端执行:

  1. #cd /  
  2. #mkdir mini2440   
  3. #mkdir tslib 

接下来我们把qt-embedded-linux-opensource-src-4.5.3.tar.gz COPY到/home下, 终端执行:

 

 
 
  1. #cd /tmp  
  2. #tar zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz   
  3. #cd qt-embedded-linux-opensource-src-4.5.3 
  1. #./configure -prefix /mini2440  -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg   
  2. -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis  
  3.  -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info   
  4. -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb   
  5. -confirm-license -qt-mouse-tslib -I/home/mytslib/include -L/home/mytslib/lib 

上面最后一句“-I/home/mytslib/include -L/home/ mytslib/lib ”指明我们刚才编译出来触摸屏的库文件及头文件存放路径。它前面的“-qt-mouse-tslib”表示将使用触摸屏

然后执行:

 

 
 
  1. #gmake  
  2. #gmake install 

上面编译时间较长,一般要2到3个小时。

这样,嵌入式版本的qt4装成功了,若想进行交叉编译,首先也得改变环境变量,所以也可以在当前目录下建一个环境变量的文件setenv-embedded.sh 如下:

 

 
 
  1. #gedit setenv-embedded.sh 

这时跳出一个编辑文本输入:

 

 
 
  1. PATH=/mini2440/bin:$PATH  
  2. QTDIR=/mini2440  
  3. MAINPATH=$QTDIR/man:$MAINPATH  
  4. LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  
  5. export PATH QTDIR MAINPATH   LD_LIBRARY_PATH 

保存退出。每次进行qt4-embedded的交叉编译前先# source setenv-embedded.sh,注意我们在编译QT应用程序时要用到上述变量。下文会提到。

第四步:移植相关库文件至开发板

由于我们在/mini2440中生成的lib库比较大,即使是用nfs挂载的方式copy进去,依旧比较慢(也会发生not responsing的问题)那么我们自己在制作文件系统的时候就可以直接把我们需要的库文件制作进去。

首先在rootfs 的根目录下建立两个目录:

  1. #mkdir mini2440  
  2. #mkdir tslib 

接着

  1. #cp –rf /home/mytslib/lib  你制作的文件系统/tslib/  
  2.    #cp –rf /home/mytslib/etc 你制作的文件系统/tslib/  
  3.    #cp –rf /mini2440/lib 你制作的文件系统/mini2440/  

  

  1. #cp /home/mytslib/bin/ts_calibrate 你制作的文件系统/bin  
  2. #cp /home/mytslib/bin/ts_test 你制作的文件系统/bin  

接着修改你制作的文件系统的/etc/profile

添加一下环境变量:

  1. export  QTDIR=/mini2440  
  2. export  T_ROOT=/tslib  
  3. export  PATH=$QTDIR/bin:$PATH  
  4. export  TSLIB_CONSOLEDEVICE=none 
  5. export  TSLIB_FBDEVICE=/dev/fb0  
  6. export  TSLIB_TSDEVICE=/dev/event0  
  7. export  TSLIB_PLUGINDIR=$T_ROOT/lib/ts  
  8. export  TSLIB_CONFFILE=$T_ROOT/etc/ts.conf  
  9. export  TSLIB_CALIBFILE=/etc/pointercal  
  10. export  QWS_MOUSE_PROTO=tslib:/dev/event0  
  11. export  LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib  

制作完文件系统后,下载进开发板,

验证变量设置是否成功:

在开发板终端下执行:

#echo $QTDIR  如果显示  #/mini2440,则说明设置成功了,在QT的移植过程中环境变量的设置是非常重要的,如果设置的不正确会出现很多问题。这样最基本的QT的移植便算是完成了。还有字库和其他的一些东西,用到了再说吧。

验证QT程序在开发板上是否可以运行。这时你首先需要移植的就是 tslib库。

参考:http://blog.youkuaiyun.com/zhaole20094463/article/details/7272219

移植成功后,

主机终端执行:

#echo $QTDIR  ――――回显为“/mini2440”则说明环境变量设置OK。

 

  1. #cd  ……/ qt-embedded-linux-opensource-src-4.5.3/ examples/mainwindows/application/  
  2. #qmake –project      (如果提示无“qmake”命令,则肯定是你的环境变量的路径设置不正确,或者source setenv-embedded.sh一下即可)  
  3. #qmake     (成生Makefile)  
  4. #make      (生成可执行程序) 

至此,如果你没发生什么错误应该可以在application下看到“application”的可执行程序了,把它下载到你的开发板下并执行:

 

 
 
  1. #./application –qws    

注意:这里对内核是有要求的 一定要支持UNIX SOCKET的创建,否则会报错

QWSServerSocket::init: Address family not supported by protocol
  QWSServerSocket: unable to create socket.
  QWSServerPrivate::initServer: server socket not listening: Illegal seek
  Failed to bind to /tmp/qtembedded-0/QtEmbedded-0
  Aborted

现在就可以看到屏幕上的对话框了。

这样QT的移植初步就结束了。

一定要选择:

Networking support---->

Networking options ----->

<*>Unix domain sockets

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值