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

来源:互联网 发布:cf防沉迷解除软件 编辑:程序博客网 时间:2024/06/05 17:33

Qt移植学习之路 QT4.5.3至mini2440是本文介绍的内容,关于移植我们应该接触过很多相关内容,先来看本文介绍。


本文介绍的是Qt移植学习之路 QT4.5.3至mini2440,终于成功移植QT 4.5.3至mini2440,并能运行QT自带的应用程序,总得来说还算很顺利,下面是我移植的全部过程。

首先,我交待一下我的开发环境:

宿主机:Fedora9 

主机Gcc:gcc 版本 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)

交叉编译器:arm-linux-gcc-4.3.2 (友善光盘自带)

开发板:mini2440(NAND 128M  SDRAM 64M)

移植步骤:

1.准备源码包

从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

前者是移植到开发板上运行的,后者是方便在X86机上开发应用程序,待一切调试成功再经交叉编译后下载到开发板上运行。

从网上下载tslib-1.4.tar.gz包,这包用于管理触摸屏,例如可用于它来校正触摸屏,并保存校正数据。

2.编译安装tslib-1.4

把tslib-1.4 COPY到Fedora9的 /opt下,在Fedora9的终端下执行:

  1. #cd /tmp  
  2. # tar zxvf tslib-1.4.tar.gz       ――――――――(最后在/tmp下解压生成tslib)  
  3. #cd  tslib   
  4. #./autogen.sh  
  5.     #./configure --prefix=/home/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes 
  6.     #make  
  7. #make install 

成功后可在/home下生成mytslib,进入mytslib可以看到有bin include lib etc四个文件夹。我们暂时先不理它,在接下来的移植过程中才用到这些文件夹。

3. 编译安装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下的/tmp目录下,接着执行:

  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

也许你会想,我是否能重新编译一遍analogclock呢?因为analogclock目录下有一个Makefile,于是执行:

  1. #make clean  
  2. #qmake –project   

唉,你会发现,提示说找不到命令“qmake”,怎么办呢?很简单,因为我们还没有设置环境变量,当然会找不到命令啦。  

让我们来设置一下QT-X11-4.5.3的环境变量,首先进入你的安装QT-x11-4.5.3目录:

  1. #cd /opt/qt-x11-opensource-src-4.5.3 

在此目录下建立一个名为:qt_x11_setenv.sh的shell文件,内容如下:

  1. #!bin/bash  
  2. PATH=/usr/local/Trolltech/Qt-4.5.3/bin:$PATH  
  3.     QTDIR=/usr/local/Trolltech/QT-4.5.3  
  4.     MAINPATH=$QTDIR/man:$MAINPATH  
  5.     LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH  
  6. export PATH QTDIR MAINPATH   LD_LIBRARY_PATH  
  7. echo "     set qt-x11 env. successful    " 

保存退出,在终端执行:

  1. #source qt_x11_setenv.sh 

终端回显:set qt-x11 env. successful

  1. #echo $QTDIR 

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

在这之后,我们再执行一下:

  1. #qmake –project    (建立*.pro文件)   
  2. #qmake          (产生Makefile文件)   
  3. #make            (编译产生可执行程序) 

如果没有错误将生成analogclock可执行程序,终端执行:

  1. #./analogclock –qvfb   

看看是否出现画面了~~~~~~~~~~

注意一点:

在每次进入qt-x11-linux-opensource-src-4.5.3目录中要 #source setenv-x11.sh

把环境变量设置好,否则又会出现无法编译。

成功后,是不是有点迫不及待地想自己试验一个QT程序呢,让我们来编写一个hello程序吧!

  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中。

  1. #include <QApplication>   
  2. nclude <QPushButton> 
  3.  int main(int argc, char *argv[])  
  4.       {  
  5.            QApplication app(argc,argv);  
  6.            QPushButton b("Hello World !");  
  7.               b.show();  
  8.               QObject::connect(&b,SIGNAL(clicked()),&app,SLOT(quit()));  
  9.                return app.exec();  
  10.         } 

进入前记得执行source setenv-x11.sh

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

如果不出错在当前目录下生成hello可执行程序,既然生成了,那还等什么,执行吧。

  1. #./hello –qvfb   

我执行后就出图了,你的呢?

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

其实图是可以拉大的,你试试!

4.编译安装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到/tmp下, 终端执行:

  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应用程序时要用到上述变量。下文会提到。



原创粉丝点击