• 4637阅读
  • 2回复

【提问】编译qtopia2.1.1时出错 [复制链接]

上一主题 下一主题
离线roy_skyx
 

只看楼主 倒序阅读 楼主  发表于: 2006-03-08
配置:
./configure -debug -edition pda -no-qtopiadesktop -displaysize 176x220
make时在编译到games目录下的fifteen时报错。
moc_fifteen.cpp:89:undifined reference to ‘QMetaObject::new_metaobject(.........)
不知到是什么原因?
[ 此贴被XChinux在2006-03-08 12:15重新编辑 ]
离线cavendish

只看该作者 1楼 发表于: 2006-03-08
你的qte怎么编译的呢?
把你的整个编译过程说得再清楚一些
离线roy_skyx

只看该作者 2楼 发表于: 2006-03-09
主要是根据 《Qtopia安装简要入门》中 Qtopia 2.1.1自由版安装 部分来做的

后来我发现,在qtopia中,所有的src/applications目录下的例子都可以编译通过(在moc*文件中也用到了QMetaData类),而src/games目录下的例子都不能编译通过,不知道是什么原因。上面的类(QMetaData)是qtemb2.3.10中的,在qtemb2.3.10中关于这各类是可以编译通过的


附:《Qtopia安装简要入门》(部分)

Qtopia 2.1.1自由版安装
第一步,我们先准备一个shell文件,我这里以bash为例:

vi $HOME/shell/qtopia-free-2.1.1.sh

下面是shell文件的具体内容:

TROLLTECHDIR=$HOME/Trolltech
TMAKEDIR=$TROLLTECHDIR/tmake-1.13
QT2DIR=$TROLLTECHDIR/qt-x11-free-2.3.2-debug
QTEDIR=$TROLLTECHDIR/qt-embedded-free-2.3.10-debug
QPEDIR=$TROLLTECHDIR/qtopia-phone-2.1.1-debug
QT3DIR=/usr/lib/qt3
QTDIR=$QTEDIR
DQTDIR=$QT3DIR

TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++
QMAKESPEC=linux-g++
PATH=$QT2DIR/bin:$QTEDIR/bin:$QPEDIR/bin:$DQTDIR/bin:$QT3DIR/bin:$QTDIR/bin:$TMAKEDIR/bin:$PATH
LD_LIBRARY_PATH=$QT2DIR/lib:$QTEDIR/lib:$QPEDIR/lib:$DQTDIR/lib:$QT3DIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH

export TROLLTECHDIR TMAKEDIE QT2DIR QTEDIR QPEDIR QT3DIR QTDIR DQTDIR TMAKEPATH QMAKESPEC PATH LD_LIBRARY_PATH

然后就是让这个shell文件生效了。

source $HOME/shell/qtopia-free-2.1.1.sh

自由版中,因为Qtopia Desktop不能进行编译,所以编译过程中不需要编译Qt X11 3.x版本。我们这就开始编译了:

cd $QTEDIR
cp $QPEDIR/src/qt/qconfig-qpe.h src/tools -f
./configure -debug -qconfig qpe -qvfb -depths 4,8,16,32 -keypad-mode -system-jpeg -gif
make sub-src

cd $QT2DIR
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -debug -no-opengl -no-xft
make sub-src
cd tools/designer/util
make
cd ../uic
make

cp $QTDIR/bin/uic $QTEDIR/bin

cd $QTEDIR/tools/qvfb
tmake qvfb.pro > Makefile
make
cp qvfb $QTEDIR/bin

cd $QPEDIR
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -debug -edition pda -no-qtopiadesktop -displaysize 240x320
make
make install

cd image/opt/Qtopia
mkdir demohome

编译已经完成了,Qtopia 2.1.1自由版中没有提供启动脚本,我们来写一个:

vi $HOME/shell/startpdademo-2.1.1.sh

下面是脚本内容:

#!/bin/sh
source $HOME/shell/qtopia-free-2.1.1.sh

export QTDIR=$HOME/Trolltech/qtopia-free-2.1.1-debug/image/opt/Qtopia
export QPEDIR=$HOME/Trolltech/qtopia-free-2.1.1-debug/image/opt/Qtopia
export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH
export PATH=$QPEDIR/bin:$PATH

findproc() {
    /bin/ps -e | /bin/sed -n -e '/\<'$1'\>/ s/^ *\([0-9][0-9]*\).*/\1/p'
}

killproc() {
    pid=`findproc $1`
    [ "$pid" != "" ] && kill $pid
}

killall quicklauncher
killall qpe
killall qvfb
[ -x /sbin/fuser ] && ( /sbin/fuser -kn tcp 4242 || /sbin/fuser -kn tcp 4243 )
[ -x /bin/fuser ] && ( /bin/fuser -kn tcp 4242 || /bin/fuser -kn tcp 4243 )

echo "Stopping common sound deamons..."
artsd_pid=`findproc artsd`
[ "$artsd_pid" != "" ] && kill $artsd_pid
esd_pid=`findproc esd`
[ "$esd_pid" != "" ] && kill $esd_pid

echo "Starting qvfb..."
qvfb -width 240 -height 320 &

sleep 5s

echo "Starting Qtopia 2.1.1..."
HOME=$HOME/Trolltech/qtopia-free-2.1.1-debug/image/opt/Qtopia/demohome qpe

echo "Restarting killed sound deamons..."
[ "$artsd_pid" != "" ] && artsd &
[ "$esd_pid" != "" ] && esd &

执行这个脚本就可以启动了,看看结果吧。
快速回复
限100 字节
 
上一个 下一个