环境 :ubuntu12.04
Qt库版本:4.8.4
交叉编译器:arm-linux-gcc 4.4.3
在前面的博客中,已经把qt-everwhere-opensource-4.8.4编译成arm版,并且把库移植到开发板,开发板已经能够运行PC的qt开发的程序。 现在希望利用X86版嵌入式库编译成功的程序能够在PC上用qvfb虚拟帧缓冲运行。
1、编译pc版。把qt-everywhere-opensource-src-4.8.4.tar.gz解压到建立的pc文件夹,进入pc,
#./configure
#make && make install
如果在gmake的时候出现:
/usr/include/X11/extensions/XTest.h:50:35:错误:X11/extensions/XInput.h:没有该文件或目录
Infile included fromx11keyfaker.cpp:47:
/usr/include/X11/extensions/XTest.h:104: 错误:‘XDevice’未声明
/usr/include/X11/extensions/XTest.h:114:错误:‘XDevice’未声明
/usr/include/X11/extensions/XTest.h:124:错误:‘XDevice’未声明
/usr/include/X11/extensions/XTest.h:133:错误:‘XDevice’未声明
make:*** [.obj/release-shared/x11keyfaker.o] 错误1
解决方法:sudo apt-get install xorg-dev
2、编译嵌入式x86版。把qt-everwhere-opensource-4.8.4解压到建立的x86文件夹,进入目录x86
#./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
#make && make install
// 安装时间会很长,每次编译这类东西我都是睡觉时编译,早上起来就OK了。
3、编译安装PC版中的qvfb。
进入第一步pc/toos/qvfb ,执行#make
如果make的时候出现了:
x11keyfaker.cpp:48:34:致命错误:X11/extensions/XTest.h:没有那个文件或目录
make: ***[.obj/release-shared/x11keyfaker.o]错误1
解决方法: sudoapt-get installxorg-dev
完成后,将pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.8.4/bin目录。
4、x86下的编译与调试。
打开一个qt工程,如books, 在Qt-creator界面左侧点击Projects图标,打开工程设置界面。
在EditProject Settings for Project books——〉BuildSettings——〉EditBuild Configuration:单击Add,在下拉列表 中选择UsingQt Version “QtEmbedded4.8.4-x86”弹出对话框单击Ok按钮。
在RunSettings-Arguments:文本框中添加参数“-qws”。
设置完毕,点击Edit图标,回到编辑界面。
编译:在Build菜单下,先CleanProject “books”,然后BuildProject “books”,在右下角CompileOutput窗口能看到编译信息。
运行:
启动终端,#/usr/local/Trolltech/QtEmbedded-4.6.3/bin/qvfb -width 800 -height 480&,启动Qvfb。
在启动qvfb后我这儿提示QLock::QLock: Cannot get semaphore /tmp/qtembedded-root/QtEmbedded-0 'd' (2, 没有那个文件或目录),还没有找到原因,不过能正常使用,可能程序中用到信号量后会出问题,先暂时不管它.
回到Qt-creator,Build——〉Run,运行程序。 现在就可以看到效果了!
调试:Debug——〉StartDebugging——〉StartDebugging,即可启动调试(请保证books路径中没有中文名,即不要把books工程放在了某个含有中文字符的文件夹下,不然无法启动调试)。
此时感觉如果前面编译选项EditProject Settings for Project books——〉BuildSettings——〉EditBuildConfiguration:选择Debug项,则调试启动速度比Release时的要快很多。