《华清远见学习手记》之 ubuntu8.10 下搭建QT4.4.0开发环境

时间:2022-01-17 04:59:56

 

 ubuntu8.10 下搭建QT4.4.0开发环境

 


  【编译环境】:Ubuntu 8.10 +Vmware + windows xp
  【交叉编译器】:arm-linux-gcc-3.4.1
  【用户】:root


  具体步骤与说明:

0、 增加一块虚拟硬盘

我的虚拟机主硬盘只有10G,安装QT会占用比较大的空间,所以需要增加一块虚拟硬盘专门用于安装QT,步骤如下:

a.Vmware 的菜单 VM ->setting..->Hard Disk->Add 增加一个5GSCSI,重启ubuntu

b./dev下会生成一个sdb,表示第二块scsi硬盘,执行  mkfs.ext3 /dev/sdb将它格式化为ext3

c.在根目录下 mkdir/hd2 ,执行mount–t ext3  /dev/sdb  /hd2即可将新添加的硬盘挂载到/hd2下面;

d.上一步所做的每次重启系统后都需要重新手动挂载,为了实现开机自动挂载,可以在/dev/fstab 里加上一行: /dev/sdb   /hd2  ext3    defaults,errors=remount-ro 0   0

1、下载源码包
  qt-x11-opensource-src-4.4.0.tar.bz2
  qt-embedded-linux-opensource-src-4.4.0.tar.bz2
  下载地址:f t p://ftp.qtsoftware.com/qt/source/

把它们都复制到刚才建立的/hd2下面。
2
、编译及安装qt-x11-opensource-src-4.4.0
  qt-x11版本可以生成Qt的开发工具,如designer等等,还可以得到qvfbqvfb是桌面环境中用来模拟嵌入式环境中的显示屏的,有了它我们在开发嵌入式软件时就可以暂时不用开发板了。qt-embedded版本就是专门用于嵌入式方面的版本。
  tar xjvfqt-x11-opensource-src-4.4.0.tar.bz2
  cdqt-x11-opensource-src-4.4.0
  ./configure –prefix /hd2/qt4_4 –no-openssl –no-opengl –no-sm
  make
  make install
  上面的-prefix /hd2/qt4_4 是指定make install安装的目标路径,如果不指定就会默认安装到/usr/local/Trolltech/Qt-4.4.0下面;后面的-no-*选项,取消了几个不常用的模块,以减少编译时间和占用空间。编译过程比较漫长,先做点别的事情吧(比如我,就写现在的这个文档,还是到外面透透气,做做操吧)!两个小时后,QT的工具和文档安装到了/hd2/qt4_4下。编译完成后的源程序qt-x11-opensource-src-4.4.0不要删除,以后还有用呢。
3
、编译及安装qt-embedded-linux-opensource-src-4.4.0

请看下面的命令,为什么要把qt-embedded-linux-opensource-src-4.4.0分别做成两份呢?不难看出,前者是适合x86架构的,后者适合 arm架构,在没有开发板的情况下,仅用前者结合qvfb就可以完成初步调试了,很是方便;有开发板时,使用后者编译成目标文件,就可以下载到板子运行了。
  
  cp qt-embedded-linux-opensource-src-4.4.0.tar.bz2/hd2

cd /hd2
  tar xjvfqt-embedded-linux-opensource-src-4.4.0.tar.bz2
  mv qt-embedded-linux-opensource-src-4.4.0  qt-embedded-linux-opensource-src-4.4.0-x86
  tar xjvf qt-embedded-linux-opensource-src-4.4.0.tar.bz2
  mv qt-embedded-linux-opensource-src-4.4.0 qt-embedded-linux-opensource-src-4.4.0-arm


  cdqt-embedded-linux-opensource-src-4.4.0-x86
  

echo "yes" | ./configure /

-prefix /hd2/qte4_4-x86 /

-release /

-shared /

-no-qt3support /

-no-xmlpatterns /

-no-svg /

-no-webkit /

-system-zlib /

-qt-gif /

-system-libtiff /

-system-libpng /

-qt-libmng /

-system-libjpeg /

-make libs /

-make tools /

-nomake examples /

-nomake docs /

-nomake demo /

-no-nis /

-no-cups /

-no-iconv /

-no-dbus /

-no-openssl /

-platform qws/linux-generic-g++ /

-xplatform qws/linux-x86-g++ /

-embedded x86 /

-qt-freetype /

-depths 16,18 /

-qt-gfx-qvfb /

-no-gfx-transformed /

-no-gfx-multiscreen /

-no-gfx-vnc /

-no-gfx-linuxfb /

-qt-kbd-tty /

-qt-kbd-usb /

-qt-kbd-qvfb /

-qt-mouse-pc /

-qt-mouse-qvfb /

-no-glib  

make
  makeinstall
  顺利的话,qt-embedded-x86被安装在/hd2/qte4_4-x86. 实际上,我的机器上没有编译通过,make 时出现这样的错误:

from embedded/qdirectpainter_qws.cpp:43:

../../include/QtGui/private/../../../src/gui/kernel/qapplication_p.h:347:error: multiple parameters named ‘screen’

make[1]: *** [.obj/release-shared-emb-x86/qdirectpainter_qws.o]Error 1

make[1]: Leaving directory`/hd2/qt-embedded-linux-opensource-src-4.4.0-x86/src/gui'

make: *** [sub-gui-sub_src_target_ordered] Error 2

如果你也遇到了这个问题,并且成功地解决了它,请你告诉我:boat_man@163.com.

下面是编译arm版本下的:
  cd qt-embedded-linux-opensource-src-4.4.0-arm

为增加对触摸屏的支持,需要加入tslib库,

修改qws/linux-arm-g++中的qmake.conf文件。

QMAKE_LIBS-DYNLOAD后增加-lrt

QMAKE_INCDIR后加tslib的头文件目录(我的是/hd2/mytslib/include

QMAKE_LIBDIR后加上tslib的库文件目录(我的是/hd2/mytslib/lib)


  echo"yes" | ./configure /

-prefix /hd2/qte4_4-arm /

-release /

-shared /

-no-qt3support /

-no-xmlpatterns /

-no-svg /

-no-webkit /

-qt-zlib /

-qt-gif /

-qt-libpng /

-qt-libjpeg /

-make libs /

-make tools /

-nomake examples /

-nomake docs /

-nomake demo /

-no-nis /

-no-cups /

-no-iconv /

-no-dbus /

-no-openssl /

-platform qws/linux-generic-g++ /

-xplatform qws/linux-arm-g++ /

-embedded arm /

-qt-freetype /

-depths 16,18 /

-qt-gfx-linuxfb /

-no-gfx-transformed /

-no-gfx-multiscreen /

-no-gfx-vnc /

-no-gfx-qvfb /

-qt-kbd-tty /

-qt-mouse-tslib/

-qt-mouse-pc /

-no-glib 


  make
  make install
  顺利的话,qt-embedded-arm被安装在/hd2/qte4_4-arm.很幸运地,我的顺利地通过了编译,开始提示库找不到,得先make confclean ,然后./configure 重来,全改成qt自带的第三方库了,所以上面看不到-system-lib打头的选项。


4
、至此已经安装好了qt-x11,即在PC机桌面环境上运行的QTqt-embedded-x86(x86体系的嵌入式板子上运行的QT,当然在我们的PC桌面环境上也能运行,qvfb用的就是它)qt-embedded-arm(arm板子上运行的QT).下一步:设置环境变量
  (1)针对qt-x11
  vim setenv_x11.sh


  添加如下内容:

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

QTDIR=/hd2/qt4_4
    QMAKESPEC=$QTDIR/mkspecs/qws/linux-generic-g++
    PATH=$QTDIR/bin:$PATH
    LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
    export QTDIR QMAKESPEC PATH LD_LIBRARY_PATH

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


  保存退出.复制到/hd2/qt4_4 下备份。
     
   (2)
针对qt-embedded-x86
  vim setenv_x86.sh


  添加如下内容:

#------------------------------------------------------
  QTEDIR=/hd2/qte4_4-x86
    QMAKESPEC=$QTEDIR/mkspecs/qws/linux-x86-g++
    PATH=$QTEDIR/bin:$PATH
    LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
    export QTEDIR QMAKESPEC PATH LD_LIBRARY_PATH

   
#-----------------------------------------------------
  保存退出.复制到/hd2/qte4_4-x86 下备份。

(3) 针对qt-embedded-arm
  vim setenv_arm.sh


  添加如下内容:

#-------------------------------------------------
   
QTEDIR=/hd2/qte4_4-arm
    QMAKESPEC=$QTEDIR/mkspecs/qws/linux-arm-g++
    PATH=$QTEDIR/bin:$PATH
    LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
    export QTEDIR QMAKESPEC PATH LD_LIBRARY_PATH

     #------------------------------------------------------
  保存退出.复制到/hd2/qte4_4-arm 下备份。


  我们在编译的时候,运行对应平台的脚本,比如我们要用qt-x11:
  source setenv_x11.sh
  然后就可以使用x11下的qmakedesigner等工具了


5
、用于模拟嵌入式显示的qvfb还没有编译,qt-x11-opensource-src-4.4.0中重新编译qvfb
  cd /hd2/qt-x11-opensource-src-4.4.0
  make -C /tools/qvfb
  顺利的话,会在qt-x11-opensource-src-4.4.0/bin下生成qvfb,我们将它复制到/hd2/qte4_4-x86/bin下。
       
6
、测试一下效果
  source setenv_x86.sh
  cd /hd2/qt4_4-x86/demos/books
  qvfb -width 640 -height 480 &
  ./books -qws

7、 运行x11程序时,如果出现 XXXX:cannot connect to X Server, 在当前终端下: export DISPLAY=:0.0