step1. 将qt-x11-opensource-src-4.5.1.tar.bz2拷贝到Linux下,解压缩并安装:
#tar jxvf qt-x11-opensource-src-4.5.1.tar.bz2
#cd qt-x11-opensource-src-4.5.1
#./configure –no-openssl
#make && make install
step2. 设置环境变量(两种方法):
仅当前用户有效(其他用户无效):修改$HOME/.bash_profile,加入:
PATH=/usr/local/Trolltech/Qt-4.5.1/bin:$PATH
立即生效:
#source $HOME/.bash_profile
所有用户有效(包括root和普通用户): 修改/etc/profile,加入以下行(一般在最后一行添加):
export PATH=/usr/local/Trolltech/Qt-4.5.1/bin:$PATH
立即生效:
#source /etc/profile
step3.
#cd qt-x11-opensource-src-4.5.1/tool/qvfb
#make
#cp qvfb /usr/bin
上述步骤是为了生成qvfb并可直接用于调试qt-embedded for x86的程序。方法为在源码目录下,终端输入:
#qmake -project
#qmake
#make
#qvfb &
#./demo
此时可能出现的编译和链接错误:
1.
qvfb.cpp:51:24: error: deviceskin.h: No such file or directory
qvfb.cpp:261: error: ‘DeviceSkinParameters’ was not declared in this scope
qvfb.cpp:261: error: expected `;' before ‘parameters’
qvfb.cpp:263: error: ‘parameters’ was not declared in this scope
qvfb.cpp:263: error: ‘DeviceSkinParameters’ is not a class or namespace
qvfb.cpp:264: error: invalid use of incomplete type ‘struct DeviceSkin’
qvfb.h:57: error: forward declaration of ‘struct DeviceSkin’
由于qt默认是不编译qvfb的,所以在Makefile中是不带deviceskin.h的路径的,导致上述类似错误出现。如果在Makefile中加入-I../shared/deviceskin 是不够的,具体的函数实现在../shared/deviceskin/deviceskin.cpp中,还是会出错。
解决办法:
#cp ../shared/deviceskin/deviceskin.h .
#cp ../shared/deviceskin/deviceskin.cpp .
#qmake -project
#qmake
#make
2.
.obj/release-shared/x11keyfaker.o: In function `X11KeyFaker::sendKeyEvent(int, bool)':
/tmp/qt-x11-opensource-src-4.5.1/tools/qvfb/x11keyfaker.cpp:463: undefined reference to `XTestFakeKeyEv$
/tmp/qt-x11-opensource-src-4.5.1/tools/qvfb/x11keyfaker.cpp:479: undefined reference to `XTestFakeKeyEv$
/tmp/qt-x11-opensource-src-4.5.1/tools/qvfb/x11keyfaker.cpp:458: undefined reference to `XTestFakeKeyEv$
/tmp/qt-x11-opensource-src-4.5.1/tools/qvfb/x11keyfaker.cpp:451: undefined reference to `XTestFakeKeyEv$
/tmp/qt-x11-opensource-src-4.5.1/tools/qvfb/x11keyfaker.cpp:472: undefined reference to `XTestFakeKeyEv$
.obj/release-shared/x11keyfaker.o:/tmp/qt-x11-opensource-src-4.5.1/tools/qvfb/x11keyfaker.cpp:463: more$
.obj/release-shared/x11keyfaker.o: In function `X11KeyFaker::connect()':
/tmp/qt-x11-opensource-src-4.5.1/tools/qvfb/x11keyfaker.cpp:548: undefined reference to `XTestQueryExte$
collect2: ld returned 1 exit status
make: *** [qvfb] Error 1
XTestFakeKeyEvent函数链接的问题。
解决办法:
在Makefile 的链接库中加入-lXtst。
#qmake -project
#qmake
#make
#cp ./qvfb /usr/bin
在当前目录下就会生成qvfb。