分类:
2011-05-31 10:32:37
原文地址:qt开发中遇到的问题整理七(整理) 作者:landuochong
1.Can't open framebuffer device /dev/fb0 错误
我在运行quit程序时,打入qvfb& 后,没有界面显示,然后输入下面指令,出现如下错误:
./quit -qws
Can't open framebuffer device /dev/fb0
Can't open framebuffer device /dev/fb0
driver cannot connect
其实问题出在qpe.conf这个文件,里面的变量发生了变化.
有两中方法解决:
1.在qvfb之前加上一句export QWS_DISPLAY=QVFb:0;
2.如果上述方法不行,哪只能从你的备份中把/root/Settings的qpe.conf替换
2. error while loading shared libraries: libqte.so.2: cannot open shared object file:
No such file ordirectory
# ./xing
./xing: error while loading shared libraries: libqte.so.2: cannot open shared object file: No such file ordirectory
我也遇到过类似的问题,是因为环境变量设置的问题,QTEDIR和LD_LIBRARY_PATH这两个变量一定要指定到编译好QTE库才可以。
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
这是我的~/.bashrc最后的环境变量的设置
export LD_LIBRARY_PATH=/usr/local/lib
export PATH=$PATH:/usr/include
export PATH=$PATH:.:/s3c2410_linux/host/armv4l/armv4l-unknown-linux/include
export QTDIR=/s3c2410_linux/QT/qt-2.3.7
export TMAKE=/s3c2410_linux/QT/tmake
export TMAKEPATH=$TMAKE/lib/qws/linux-x86-g++
export PATH=$PATH:$TMAKE/bin
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
3.QT 多线程的有关错误
类似提示: sinthread.h:27: parse error before `{' token 在引QThread做为基类的地方报错(如 class SinThread: public QWidget,public QThread)
原因是:找不到支线程的库,和宏 QT_THREAD_SUPPORT没有定义
解决方法:在工程文件(*.pro)里添加一行 CONFIG += thread (看到有人这样说,我实验在上面的情况下,不加此项也可以)
在linux上作QT编程时生成的Makefile不完整,多线程时应作如下改动:
修改Makefile文件:
CXXFLAGS=。。。。。。 -DQT_THREAD_SUPPORT
LIBS=。。。。。。 -lqte-mt
红色字体为需要添加的部分。此时编译即可通过。
4./usr/bin/ld: cannot find -lqte
collect2: ld returned 1 exit status
出现这个错误原因可能很多,这是链接时库找不到或由于其它的原因(目前我还说不清楚,因为不是完全了解QT的运行机理)
这次是因为: 在些之前QT/E的程序一直在qvfb 下运行,想重新编译之后在Xwindows上运行而出现的。除了在~/.bashrc中设置的QT/E的环境变量之后在一个单独的脚本做了如下改动
#bash set environment for QTX11
export QTDIR=$PWD/qt-x11-2.3.2
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
还是出现上达情况,查了资料,加上以下两句
export TMAKEPATH=$PWD/tmake/lib/linux-g++
export PATH=$TMAKEPATH:$PATH
之后,重新设置变量,编译运行就没有问题了。