qvfb的独立编译(转载)

本文详细介绍了如何解决Qt-Embedded在使用qvfb作为显示设备时遇到的问题,包括编译插件以支持qvfb、解决鼠标无法正常工作的问题,并提供了完整的编译和配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

完成

遇到的问题:

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中正常使用了
编译qvfb时可能会遇到一些缺少文件的错误,大家可以在这里找一下,放进qvfb文件夹在进行make,已经收集了很多了 qvfb\qvfbprotocol.h ....\moc_qvfbprotocol.cpp ....\qlock_p.h ....\qrc_Trolltech-Touchscreen.o ....\qrc_PDAPhone.cpp ....\qvfbratedlg.cpp ....\qvfb.cpp ....\moc_qvfbview.cpp ....\moc_gammaview.o ....\qanimationwriter.o ....\qvfbshmem.cpp ....\qvfbprotocol.cpp ....\deviceskin.pri ....\qrc_S60-nHD-Touchscreen.cpp ....\qrc_Trolltech-Touchscreen.cpp ....\qrc_Trolltech-Keypad.o ....\qrc_SmartPhone2.o ....\moc_qvfbx11view.cpp ....\moc_x11keyfaker.cpp ....\qvfbview.h ....\qrc_ClamshellPhone.o ....\qwssignalhandler.cpp ....\moc_qvfbshmem.o ....\qvfbshmem.h ....\x11keyfaker.o ....\qrc_PortableMedia.o ....\qvfbview.o ....\qvfbratedlg.h ....\qrc_S60-QVGA-Candybar.o ....\moc_qvfbmmap.cpp ....\moc_qvfbshmem.cpp ....\qtopiakeysym.h ....\qvfbmmap.h ....\qrc_qvfb.cpp ....\moc_qvfbx11view.o ....\qvfbmmap.cpp ....\qwssignalhandler_p.h ....\ui_config.h ....\qrc_PortableMedia.cpp ....\qanimationwriter.cpp ....\qrc_SmartPhone.o ....\qvfbshmem.o ....\qrc_SmartPhoneWithButtons.o ....\qlock.cpp ....\qrc_SmartPhone2.cpp ....\qvfbprotocol.o ....\moc_qvfbprotocol.o ....\x11keyfaker.cpp ....\gammaview.h ....\moc_qvfb.o ....\moc_deviceskin.cpp ....\moc_qvfbmmap.o ....\moc_qvfbratedlg.cpp ....\qrc_ClamshellPhone.cpp ....\main.o ....\main.cpp ....\qlock.o ....\qwssignalhandler.o ....\qrc_Trolltech-Keypad.cpp ....\qvfb.qrc ....\qvfb.moc ....\qrc_qvfb.o ....\qrc_TouchscreenPhone.o ....\moc_deviceskin.o ....\Makefile ....\qrc_SmartPhoneWithButtons.cpp ....\deviceskin.cpp ....\deviceskin.o ....\qrc_TouchscreenPhone.cpp ....\deviceskin.h ....\moc_x11keyfaker.o ....\qcore_unix_p.h ....\x11keyfaker.h ....\moc_qvfbratedlg.o ....\qvfbx11view.h ....\config.ui ....\qrc_PDAPhone.o ....\qvfb.pro.user ....\qvfbhdr.h ....\qvfbratedlg.o ....\qrc_S60-nHD-Touchscreen.o ....\qvfbx11view.cpp ....\translations\translations.pro ....\moc_gammaview.cpp ....\qvfb.h ....\qrc_SmartPhone.cpp ....\moc_qvfbview.o ....\images\logo-nt.png ....\......\logo.png ....\qrc_S60-QVGA-Candybar.cpp ....\qvfb.o ....\qvfbx11view.o ....\moc_qvfb.cpp ....\qvfbmmap.o ....\qanimationwriter.h ....\qvfbview.cpp ....\qvfb.pro ....\README ....\translations ....\images
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值