移植QT4.5.3至OMAP-L138(1)

 

2011-8-18移植QT4.5.3至OMAP-L138

终于成功移植QT4.5.3OMAP-L138,并能运行QT自带的应用程序,总得来说还算很顺利,下面是我移植的全部过程。

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

     宿主机:Ubuntu 

     交叉编译器:arm-linux-gcc-4.3.2 

     开发板:OMAP-L138

     

移植步骤:

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 COPYUbuntu的 /opt下,在Ubuntu的终端下执行:

cd /opt

# tar zxvf tslib-1.4.tar.gz 

#cd tslib 

#./autogen.sh

备注:

可能出现问题

(1)./autogen.sh: 4: autoreconf: not found
因为没有安装automake 工具,(ubuntu 10.04)用下面的命令安装好就可以了。

解决:
sudo apt-get install autoconf automake libtool

(2)Can't exec "libtoolize": 没有那个文件或目录 at /usr/bin/autoreconf line 190.

Use of uninitialized value $libtoolize in pattern match (m//) at /usr/bin/autoreconf line 190.

configure.ac:9: error: possibly undefined macro: AC_DISABLE_STATIC

      If this token and others are legitimate, please use m4_pattern_allow.

      See the Autoconf documentation.

configure.ac:10: error: possibly undefined macro: AC_PROG_LIBTOOL

autoreconf: /usr/bin/autoconf failed with exit status: 1

解决:

sudo apt-get install libtool

然后继续:

    #./configure --prefix=/home/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

    #make

#make install

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

 

完整的编译过程,请参见:http://blog.csdn.net/yf210yf/article/details/6701359

 

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 拷贝到Ubuntu下的/opt目录下,接着执行:

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

#cd qt-x11-opensource-src-4.5.3

#./configure

问题出现了。屏幕上会打印如下信息:

           The tslib functionality test failed!

              You might need to modify the include and library search paths by editing

              QMAKE_INCDIR and QMAKE_LIBDIR in             

解决方法:

apt-get install libxtst-dev

备注:

Ubuntu Linux下 gmake不能使用
gmake : command not found

gmake的全名应该是GNUmake

原来在ubuntu中已经取消掉了它,都用make代替。

ubuntu-cn上也有人遇到这个问题,
方法是把Makefile中的gmake全改为make

解决方案是:

/usr/bin下创建一个符号连接 cd /usr/bin && sudo ln -s make gmake 即可

$ sudo ln -s /usr/bin/make /usr/bin/gmake

如果你用的是FC等发行版的话应该没有这个问题的,就不必担心了。

    #make      //一般用时2-3小时,如果你的机子配置不太低的情况下

#make install

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

   #./analogclock –qvfb 

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

   移植QT4.5.3至OMAP-L138(1)_第1张图片

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

#make clean

#qmake –project  

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

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

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

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

#!bin/bash

PATH=/usr/local/Trolltech/Qt-4.5.3/bin:$PATH

    QTDIR=/usr/local/Trolltech/QT-4.5.3

    MAINPATH=$QTDIR/man:$MAINPATH

    LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH QTDIR MAINPATH   LD_LIBRARY_PATH

echo "set qt-x11 env. successful"

保存退出,在终端执行:

 #source qt_x11_setenv.sh

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

 #echo $QTDIR

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

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

#qmake –project    (建立*.pro文件) 

#qmake          (产生Makefile文件) 

#make            (编译产生可执行程序)

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

#./analogclock –qvfb  

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

注意一点:

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

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

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

#cd qt-x11-linux-opensource-src-4.5.3/ /opt/qt-x11-opensource-src-4.5.3/examples/

#mkdir hello

#vi hello.cpp    

然后把下列源程序COPYhello.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();

          }

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

#qmake –project (产生hello.pro文件)

#qmake           (产生Makefile文件)

#make            (执行Makefile以生成可执行程序)

可能出现问题:

error: stray '\302' in program

error: stray '\204' in program

这是什么错???怎么解决??

这个错误一般是源代码中含有一些隐藏的非ascii字符。你把东西copy到文本编辑器中,再copy回来试试

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

#./hello –qvfb  

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

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

你可能感兴趣的:(ubuntu,qt,library,makefile,终端,文本编辑)