弄了几天qte了,写写我的过程
我的配置:
软件:tmake1.1.3+qt-x11-free-2.3.2+qt-embedded-free-2.3.7
开发host:redhat9,x86
开发target:linux2.4.20, MIPS
host与target用tcp/IP连接
调试方式:
使用ddd通过网络调试,可以单步.target通过nfs与host共享开发目录。
编译了tmake和qtx11,发觉没有什么用。后来就不用了。
在host上增加一个linuxfb型的驱动myxxx,myxxx从qgfxlinuxfb继承,并修改成我
自己系统的操作方式。
在qgfxraster_qws.cpp中增加包含myxxx.cpp,并在driverTable []中增加我自己的
qt_get_screen_myxxx。
在host上设置环境变量
export QTDIR=$PWD
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
配置:
./configure -xplatform linux-mips-g++ -shared -debug -thread
编译qte2.3.7:
make
得到libqte.so.2.3.7及其链接libqte.so libqte.so.2 libqte.so.2.3
得到所有的examples和tutorial
在target上设置
export QWS_DISPLAY=myxxx
export QWS_SIZE=640x480
在target上运行./hello -qws
出现错误:
myxxx driver cannot connect
以上是我的操作过程,下面说说我遇到的问题。
使用ddd远程调试跟踪,发觉driverTable []中并没有加入qt_get_screen_myxxx项。
就做了一个试验,在输出myxxx driver cannot connect的函数qt_get_screen里加了一行,
qFatal("XXXXXXXXXXXXXXXXXXXXXXXXXXX");
变成:
QScreen *qt_get_screen( int display_id, const char *spec )
{
QString displaySpec( spec );
QString driver = displaySpec;
int colon = displaySpec.find( ':' );
if ( colon >= 0 )
driver.truncate( colon );
qFatal("XXXXXXXXXXXXXXXXXXXXXXXXXXX");
int i = 0;
while ( driverTable
.name ) {
if ( driver.isEmpty() || QString( driverTable.name ) == driver ) {
qt_screen = driverTable.qt_get_screen( display_id );
if ( qt_screen ) {
if ( qt_screen->connect( spec ) ) {
return qt_screen;
} else {
delete qt_screen;
qt_screen = 0;
}
}
}
i++;
}
if ( driver.isNull() )
qFatal( "No suitable driver found" );
else
qFatal( "%s driver cannot connect", driver.latin1() );
return 0;
}
重新编译,运行,发觉没有这一行输出。
使用ddd调试,发觉加入的一行并没有被编译进去。
于是新建一个项目,从qt-embedded-free-2.3.7.tar.gz2中解压缩,并把qt_get_screen函数改成如上所示。
发觉运行时还是没有XXXXXXXXXXXXXXXXXXXXXXXXXXX输出。
有遇到过相同问题的高人,出手就我一把!
[p:4][ 此贴被XChinux在2005-11-24 23:22重新编辑 ]