Ubuntu10.10下Qt4.5.2环境的搭建

来源:互联网 发布:nxp单片机 编辑:程序博客网 时间:2024/05/21 11:22
 

开发环境:

主机操作系统:Ubuntu 10.10
目标板:北京扬创科技s3c2440开发板

 

1.   下载源码包:

   

  a.  Qt 4.5.2 for Open Source C++ development on Linux/X11 [120Mb]
        http://get.qtsoftware.com/qt/source/qt-x11-opensource-src-4.5.2.tar.gz

 

        此源码包是用于在Linux系统下开发Qt程序用的,开发出的程序只能在PC机上运行。里面包含了designer,qvfb等工具。

 

  b.   Qt 4.5.2 for Open Source C++ development on Embedded Linux [124Mb]
       
http://get.qtsoftware.com/qt/source/qt-embedded-linux-opensource-src-4.5.2.tar.gz

 

        此源码包是用来进行嵌入式LinuxQt应用程序开发的,开发出来的程序最终目的是要在开发板上运行,但也可以利用qvfb这个工具在PC机上模拟运行。因此稍后会将此压缩文件解压成两个文件夹,分别作为开发板Qt环境以及PC机上QT的模拟环境。

        

 

2.   配置ubuntu 10.10编译环境

 

a.  安装g++:  sudo  apt-get g++


b.  安装编译X11用到的库:sudo apt-get libx11-dev libxext-dev


c.  安装libxtst-dev: sudo aptitude install libxtst-dev 否则编译qvfb出错。

 

d.  安装交叉编译器arm-liunx-gcc,并设置环境变量:下载就不说了,网上找。安装在/usr/local/arm/ 目录下面。之后在.bashrc的最后一行加上export PATH=/usr/local

/arm/4.3.2/bin:$PATH,此路径作为环境变量。

    

3.   编译及安装qt-x11-opensource-src-4.5.2 

       
a.  在你的下载目录中解压qt-x11-opensource-src-4.5.2.tar.bz2

zhangyue8624@ubuntu:~/下载$ tar xjvf qt-x11-opensource-src-4.5.2.tar.bz2
   

b.  进入解压后的目录   

zhangyue8624@ubuntu:~/下载$ cd qt-x11-opensource-src-4.5.2
    

c.  进行配置 

zhangyue8624@ubuntu:~/下载/qt-x11-opensource-src-4.5.2$ ./configure
   

d.  进行编译  

zhangyue8624@ubuntu:~/下载/qt-x11-opensource-src-4.5.2$make
   

e.  进行安装

zhangyue8624@ubuntu:~/下载/qt-x11-opensource-src-4.5.2$ make install
        

历经漫长的编译过程,默认安装在/usr/local/Trolltech/Qt-4.5.2下,编译完成后源程序不要删除,还有用。

 

4.    编译配置QtEmbedded-4.5.2-x86版本

之所以要编译x86版本的Qt,是要在PC机下模拟运行为开发板开发出来的程序    

a.  解压
zhangyue8624@ubuntu:~/下载$ tar xjvf qt-embedded-linux-opensource-src-
4.5.2.tar.bz2
zhangyue8624@ubuntu:~/下载$ mv qt-embedded-linux-opensource-src-4.5.2 qt embedded-linux-opensource
-src-4.5.2-x86   
zhangyue8624@ubuntu:~/下载$cd qt-embedded-linux-opensource-src-4.5.2-x86
    
b.   配置编译:
zhangyue8624@ubuntu:~/下载/qt-embedded-linux-opensource-src-4.5.2-x86$ ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-x86 -embedded x86 -qvfb

zhangyue8624@ubuntu:~/下载/qt-embedded-linux-opensource-src-4.5.2-x86$ make

c.   安装到/usr/local/Trolltech/QtEmbedded-4.5.2-x86目录下:
zhangyue8624@ubuntu:~/下载/qt-embedded-linux-opensource-src-4.5.2-x86$ makeinstall
   

d.  建立脚本文件:setenv_x86.sh,输入以下内容:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-x86/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-
x86/lib/:$LD_LIBRARY_PATH
    
e.  编译x86版QT应用程序前,先执行此脚本文件:
zhangyue8624@ubuntu:/usr/local/Trolltech/QtEmbedded-4.5.2-x86$ source setenv_x86.sh

 

5.    编译qvfb

 zhangyue8624@ubuntu:~/下载$ cd /qt-x11-opensource-src-4.5.2/tools/qvfb/
zhangyue8624@ubuntu:~/下载/qt-x11-opensource-src-4.5.2/tools/qvfb$ make

把/qt-x11-opensource-src-4.5.2/bin/目录下生成的qvfb复制qvfb到x86目录下:
zhangyue8624@ubuntu:~/下载$ cp /qt-x11-opensource-src-4.5.2/bin/qvfb /usr/local
/Trolltech/QtEmbedd-4.5.2-x86/bin 

 

6.    测试

zhangyue8624@ubuntu:~/下载$ cd /usr/local/Trolltech/QtEmbedded-4.5.2-x86/demos/books

qvfb -width 640 -height -480 &

./books -qws

   

7.    编译安装tslib1.4(这是网上找的,试过没有成功,不知道是开发板的问题还是怎么回事)

a. 安装编译过程需用到的程序
        

apt-get install autoconf(或autoconf2.13)
apt-get install automake
apt-get install libtool
    

b. 配置编译

tar xzvf tslib-1.4.tar.gz 
cd tslib
./configure
source autogen.sh
./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nounull=yes

 make 

c.  安装
make install-strip //生成瘦身应用程序和库打包
tar czvf tslib.tar.gz tslib

 

d.复制到NFS文件系统/usr/local目录下解压
tar xzvf tslib.tar.gz 
        
e.  设置环境变量,校准触摸屏。
在天开板终端建立脚本文件,并执行:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_FBDEVICE=/dev/fb0

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.
你可以测试有没有加载触摸屏驱动,cat /dev/input/event0(这只是我的板子上的触摸屏) ,
点击触摸屏,看终端有无显示,若有则表明正确。
        
在开发板/usr/local/tslib/bin目录下执行校准触摸屏程序:
[root@FriendlyARM bin]# ./ts_calibrate
可以运行此目录下的其他程序进行测试。
        
至此,触摸屏程序能顺利运行,接下来移植QtEmbedded-4.5.2,设置好环境变量。

 

 

8.   编译配置QtEmbedded-4.5.2-arm版本

a.  解压

zhangyue8624@ubuntu:~/下载$ tar xjvf qt-embedded-linux-opensource-src-4.5.2.tar.bz2

zhangyue8624@ubuntu:~/下载$ mv qt-embedded-linux-opensource-src-4.5.2 qt-embedded-linux-opensource-src-4.5.2-arm
zhangyue8624@ubuntu:~/下载$ cd qt-embedded-linux-opensource-src-4.5.2-arm

 

b.  配置编译:
zhangyue8624@ubuntu:~/下载/qt-embedded-linux-opensource-src-4.5.2-arm$ ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm -release-shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg-no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo-no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -l/usr/local/tslib/lib

zhangyue8624@ubuntu:~/下载/qt-embedded-linux-opensource-src-4.5.2-arm$ make
    
c.  安装到/usr/local/Trolltech/QtEmbedded-4.5.2-arm目录下:
zhangyue8624@ubuntu:~/下载/qt-embedded-linux-opensource-src-4.5.2-arm$ make
install

d.  打包编译安装好的QtEmbedded库文件:
zhangyue8624@ubuntu:$/usr/local/Trolltech# tar czvf QtEmbedded-4.5.2-arm.tar.gzQtEmbedded-4.5.2-arm

zhangyue8624@ubuntu:$/usr/local/Trolltechsz QtEmbedded-4.5.2.tgz
    

e.   建立脚本文件:setenv_arm.sh,输入以下内容:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/
export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$LD_LIB
ARY_PATH
    
f.  编译ARM版QT应用程序前,先执行此脚本文件:
source setenv-arm.sh

 

9.   在ARM板上运行DEMO

建立配置脚本
 [root@FriendlyARM /]# mkdir /usr/local/QtEmbedded-4.5.2/
 [root@FriendlyARM /]# cd /usr/local/QtEmbedded-4.5.2/
 [root@FriendlyARM QtEmbedded-4.5.2]# vi setenv-arm.sh
添加如下内容:
export QTDIR=/usr/local/QtEmbedded-4.5.2
export QPEDIR=/usr/local/QtEmbedded-4.5.2
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
 /usr/local/QtEmbedded-4.5.2/analogclock -qws &
保存退出,并执行。
 [root@FriendlyARM QtEmbedded-4.5.2]# mkdir lib/
 [root@FriendlyARM QtEmbedded-4.5.2]# mkdir lib/fonts/
把以下的库文件从编译生成的QtEmbedded-4.5.2.tgz文件包的/lib复制到目标板的/usr/local/QtEmbedded-4.5.2/lib
 libQtCore.so.4

 libQtGui.so.4
 libQtNetwork.so.4
 libQtSql.so.4
 把例子程序analogclock从编译生成的QtEmbedded-4.5.2.tgz文件包的/examples/widgets/analogclock复制到目标板的/usr/local/QtEmbedded-4.5.2/
 常用字库文件从从编译生成的QtEmbedded-4.5.2.tgz文件包的lib/fonts/复制到目标板的/usr/local/QtEmbedded-4.5.2/lib/fonts/
 ......
 运行例子
 [root@FriendlyARM QtEmbedded-4.5.2]# ./analogclock -qws
 [root@FriendlyARM /]# vi /etc/init.d/rcS
 在文件中加入:
  /usr/local/QtEmbedded-4.5.2/setenv-arm.sh        
  #/bin/qtopia & 
 添加自动启动。                        


       最后想说说,用以上方法可以在PC上开发Qt程序,但由于板子容量有限,最好不要将qt的arm板直接考到开发板的flash里,起码我的板子装不下。因此,有种方法是利用NFS启动开发板,将qt的库之类的东西放到NFS的作为根文件系统的共享目录中来实现,不过这要求会做根文件系统哦,我本人能力有限,时间有限,就没自己做,用的开发板资料盘里给的根文件系统,但是感觉它给的这个根文件夹没法让开发板屏幕显示内容,所以就算用开发板运行了程序也看不到效果,所以我也就放弃了,反正用qvfb也可以模拟。以上有可能我的理解有问题,通过今后的学习还要完善此文的。

 

       总之,搭建或者说是编译Qt环境耗费了我相当多的时间,也走了不少弯路,其实归咎于自己基础知识不够再恰当不过了。首先,你要看懂网上的资料需要具备起码的对Linux命令的了解吧,再深入一点就是要对Linux基础知识掌握的清楚,比如NFS文件系统启动开发板这个概念,我当时还真不明白,网上查资料,写帖子还是弄不太清楚,分不清和挂载的差别。其实你只要了解Linux的启动步骤就很容易理解这个概念了,对于基础知识的了解真的很重要啊,不要急于求成,因为那会让盲目的你浪费很多宝贵的时间。对此,我要感谢台湾的鸟哥,他写的“鸟哥的Linux私房菜”对我有很大帮助,建议大家去读读,网上有他的网站,可以在线阅读,真是对基础讲的很透彻,尽管是繁体字,但还是要硬着头皮看完哦。

ps:确实发现台湾人很罗嗦,但讲得就是清楚,对于不太聪明的我很好。呵呵,我不装逼的。。。