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 增加一个5G的SCSI盘,重启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等等,还可以得到qvfb。qvfb是桌面环境中用来模拟嵌入式环境中的显示屏的,有了它我们在开发嵌入式软件时就可以暂时不用开发板了。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机桌面环境上运行的QT、qt-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