在实验中遇到了若干问题,通过查找资料以及自己的摸索,解决了问题。现把具体遇到的问题现象及分析罗列如下:
1. 最好使用root身份运行designer-qt3,以便正常保存文件。比如,以mrl用户身份使用designer-qt3,开启时,控制台有“QSettings::sync: filenameis null/empty”的提示;在保存文件时,出现点击确认对话框保存,对话框重新弹出要求保存文件的提示。
2. 如果出现“qconfig.h: No such file or directory”的出错提示,如下所示
很可能是qconfig.h的文件无法访问。原因是因为当前用户没有权限访问qconfig.h文件。目前解决方案是:输入“su”,切换到管理员请权限下,重新设置环境变量。
可以编写shell脚本,来配置环境变量,脚本内容如下:
#!/bin/bash
exportBUILD=/usr/local/src/EduKit-IV/Mini2410/simple/12.3-qtopia-x86/build
export DQTDIR=$BUILD/qtopia-x86/dqt
export QTDIR=$BUILD/qtopia-x86/qt2
export QPEDIR=$BUILD/qtopia-x86/qtopia
exportLD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=$BUILD/qtopia-x86/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportQMAKESPEC=$QPEDIR/mkspecs/qws/linux-x86-g++
exportPATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$TMAKEDIR/bin:$PATH
保存脚本为qtsh。再输入“source qtsh”执行脚本。
3. 在输入“tmake –o Makefile hello_qt.pro”编译生成Arm下的Makefile时,发现出错。提示内容:“tmake error: Templatefile tmake.conf not found”
这是由于tmake没有找到对应于Arm的编译配置文件tmake.conf。这是由于,还未编译生成Arm下的配置文件。故需要在$SIMPLEDIR/12.4-qtopia-arm目录下,执行脚本arm-qt2.2-tsp.sh,以生成对应的tmake.conf配置文件。
4. 在make的时候出现问题,出错提示:“Makefile:17:*** missing separator. Stop.”
主要是因为,在Makefile文件中出现多余的<SPACE>键,删掉<SPACE>,改用<TAB>键就可以了。
5. 在输入“make”时,出现错误提示如下:
main.cpp: In function `int main(int,char**)':
main.cpp:8: error: `Form1' was not declaredin this scope
main.cpp:8: error: expected `;' before"w"
main.cpp:9: error: `w' was not declared inthis scope
main.cpp:8: warning: unused variable'Form1'
main.cpp:9: warning: unused variable 'w'
如下图所示。
查找原因,是由于利用uic生成的.cpp和.h文件中没有定义Form1等参数。这是由于uic生成了空的.h和.cpp文件。继续发现原因,是因为使用没有使用与designer-qt3对应的uic生成.h和.cpp文件。解决方法:使用uic-qt3生成.cpp和.h文件,使用方法同uic相同。
6. 遇到错误提示:
main.o: could not read symbols: File inwrong format
collect2: ld returned 1 exit status
make: *** [heyman] Error 1
原因是某些.o文件为arm的,不是x86的,在链接成可执行文件时,自然会出问题。
解决方法:输入“makeclean”,清除中间文件。
7. 使用qmake生成x86平台的Makefile文件,使用tmake生成arm的Makefile文件。