qte移植

来源:互联网 发布:点卡寄售平台源码 编辑:程序博客网 时间:2024/05/01 12:19

ubuntu9.04下编译qte-4.5.2全过程 及心得

  因为想利用qte在arm9上做界面,花了一天多时间,总算把ubuntu下的qte环境搭建起来。因为先想在x86上先了解下qt的api以及架构,所以我还没有搭建交叉编译的环境,只是构建号qvfb,并跑起了qte中的测试程序。以下是我的编译过程:(红色文字是网络上的一些相关参考资料)

在官方网站上下载
qt-embedded-linux-opensource-src-4.5.2.tar.gz
qt-x11-opensource-src-4.5.2.tar.gz

1   解压缩,编译 qt:
tar -xvf qt-x11-opensource-src-4.5.2.tar.gz
cd qt-x11-opensource-src-4.5.2
./configure -qvfb
sudo make
sudo make install
    注: configure时需要加上 -qvfb,这是x86上运行qte程序的辅助程序


2  解压缩,编译 qte:

tar -xvf qt-x11-opensource-src-4.5.2.tar.gz
cd qt-embedded-linux-opensource-src-4.5.2
./configure
sudo make
sudo make install

3 跑测试程序
qte 默认的路径是在 /usr/local/Trolltech/QtEmbedded-4.5.2/
先打开qvfb, 然后可以运行examples/下的测试程序如:
./undoframework -qws


完成

遇到的问题:

1 如果大家使用的是软件包程序直接安装的 qt,以及qvfb(没有进行相关配置),而不是使用源代码安装。则运行qte测试程序时候会报错:
Error opening framebuffer device /dev/fb0
QScreenLinuxFb::connect: No such file or directory

原因是Qt-Embedded在查找系统的显示设备时,默认去寻找LinuxFb,也即Linux的/dev/fb0设备,但是如果Qt- Embedded安装了其它显示设备,比如qvfb,则可以在qvfb上显示,但是需要一个插件(或者说驱动,可能会和设备驱动混淆),使Qt- Embedded能使用qvfb。 为了作到这一点,需要在编译Qt-Embedded时的configure命令加上如下选项
./configure -plugin-gfx-qvfb -plugin-kbd-qvfb -plugin-mouse-qvfb 或
./configure -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb

如果,你不想重新编译Qt-Embedded,也可以单独编译qvfb的gfxdrivers,命令如下
$ cd qt-embedded-linux-opensource-src-4.5.1/src/plugins/gfxdrivers/qvfb/
$/usr/local/Trolltech/QtEmbedded-4.5.1/bin/qmake
$ sudo make install
对应所在的路径,在大家的机器上可能不尽相同,领会意思就行


完成后,再打开qvfb,然后运行qte测试程序,大家可以看到,qvfb窗口中出现了qte测试程序的界面


2 鼠标问题:体验qvfb中的qte程序,发现qvfb中鼠标根本不好使,查询后发现qvfb最好是和qt-x11一个版本;而如果使用软件包程序直接装的,qvfb是3点几的版本。所以最好编译4.5.2版本的qvfb:

编译Qt-X11是一个挺漫长的过程,而且也浪费空间。所以我们可以选择安装Linux发行版提供的已经编译好的二进制的版本。Qt开发环境的安装(ubuntu)介绍了这个安装过程。但遗憾的qt4的桌面包并没有提供编译好的qvfb版本,qvfb工具在qt3-dev-tools-embedde这个包里,而这个包依赖於Qt3的库,我们没必要仅仅为了一个qvfb再去安装qt3的包。所以,我们需要自己编译qvfb。
当然你可以把整个qt-x11的代码包下载下来,重新configure -qvfb,这样当然能够编译成功,这不是我们想要的。我们只需要编译qvfb。 但是当你尝试常规的qmake ; make的时候发现没法编译成功。 该原因在QtCreator中编译qvfb失败的原因讨论过,现在发现不仅仅是QtCreator/SDK中的问题,在源码发布包qt-x11-opensource-src-4.5.2中是一样的,所以我们需要做点小小改动。

1) 将QT_SOURCE_TREE的目录设置到我们当前的目录上,这个变量qvfb.pro要用到,执行命令

cd qt-x11-opensource-src-4.5.2
$ qmake -set QT_SOURCE_TREE $PWD

3) 改动qvfb.pro中使用变量方式$$QT_SOURCE_TREE为$$[QT_SOURCE_TREE],执行命令为

$ sed -i "s/QT_SOURCE_TREE/[QT_SOURCE_TREE]/g" tools/qvfb/qvfb.pro

4)执行qmake,make编译,执行命令为

$ cd tools/qvfb/
   qmake
  sudo make;

5) 最后qvfb编译成功,在qt-x11-opensource-src-4.5.2/bin目录下.把这个拷贝到/usr/bin/中,就大功告成了


这样再跑测试程序,鼠标就可以在qvfb中正常使用了



     之前接触过linux,但了解有限,对于环境变量设置以及交叉编译配置还未完全弄透。写下上面的这些,给同样新接触qte的TX做参考,有需要改正和完善的,请大家多指教!