首页| 论坛| 消息

标题:Hello world 程序通过交叉编译,但在板子上运行时出错
作者:howewe
日期:2007-07-20 08:31
内容:

各位大侠,我用qt designer 编写的Hello world 程序通过交叉编译,但在板子上运行时出错,具体情况如下:
交叉编译工具:arm-linux-2.95.3,安装在/usr/local/arm/2.95.3下
在/usr/local/src/edukit-2410/gui/qt下安装并编译了e2fsprogs-1.35,jpeg-6b,qt-2.3.2,qt-2.3.7,qtopia-free-1.7.0,tmake-1.11,tslib
我曾经根据QT参考文档所述,通过些代码的方式,编写过一个hello world,编译后在主机和目标板上(NFS方式)均可运行,我想这说明我的交叉编译环境和运行环境应该没错。
现在我尝试用qt designer(FC6自带的qt3.3)编写hello world,界面上仅包含一个TextLabel,保存为helloqt.ui,由qt自动生成主函数main.cpp,用uic由helloqt.ui生成helloqt.h和helloqt.cpp,把他们添加入工程,故hello.pro中含有main.cpp,helloqt.h,helloqt.cpp,helloqt.ui四个文件
设置环境变量,经编译,能生成主机上的可执行文件,并运行正常。
然后,改变环境变量后,设置交叉编译的环境变量如下:
export QTDIR=/usr/local/src/edukit-2410/gui/qt/qt-2.3.7
export QPEDIR=/usr/local/src/edukit-2410/gui/qt/qtopia-free-1.7.0
export TMAKEDIR=/usr/local/src/edukit-2410/gui/qt/tmake-1.11
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export PATH=$QTDIR/bin:$TMAKEDIR/bin:$QPEDIR/bin:/usr/local/arm/2.95.3/bin:$PATH
经编译,能生成目标机上的可执行文件,但是用NFS方式把nfsroot(/s3c2410/root)挂载到目标板上(S3C2410)
开发板中的环境变量设置如下:
~ # export QTDIR=/qt
~ # export QPEDIR=/qt
~ # export PATH=/qt/bin:$PATH
~ # export LD_LIBRARY_PATH=/qt/lib:$LD_LIBRARY_PATH
运行出错:
~ # helloqt -qws
helloqt: error in loading shared libraries: helloqt: undefined symbol: new_metaobject__11QMetaObjectPCcT1P9QMetaDataiT3iP13QMetaPropertyiP9QMei

我估计是交叉编译环境的库和目标板中的库不一致,目标板中的root是开发板厂商提供给我的,未曾修改,因此尝试:
把$QTDIR/lib中的libqte.so等四个文件复制并复盖板子中s3c2410pro/root/qt/lib中的同名文件
把$WORKDIR/qtopia-free-1.7.0/lib中的libqpe.so等四个文件复制并复盖板子中s3c2410pro/root/qt/lib中的同名文件
这时运行
~ # helloqt -qws
helloqt: /lib/libc.so.6: version `GLIBC_2.2' not found (required by /qt/lib/libqpe.so.1)
helloqt: ..

回复 发表
主题 版块