• 7842阅读
  • 3回复

求助 qte小程序在arm开发板上运行出现segmentation fault [复制链接]

上一主题 下一主题
离线znotx
 
只看楼主 倒序阅读 楼主  发表于: 2007-09-03
如题,桌面FC4,tmake-1.13 , qtx112.3.2 ,qte 2.3.10 ,arm-linux-gcc 3.4.1
qte编译成PC和ARM两个版本。PC版根据qte2.3.10里的安装手册编译,ARM版根据网友断水刀的方法编译(见附录二)。同样出现下面的错误,
问题一:请问大家这是什么原因?会对生成的库有影响吗?

我使用附录一所示的小程序进行测试,在QVFB运行正确,在ARM版的qte上编译也正常。可是把程序传到开发板上运行出现segmentation fault。我是把ARM版qte下生成的lib和arm的库文件发到我的文件系统中。运行程序前指定export LD_LIBRARY_PATH=/lib;(开发板上库文件)。我第一次移植qte,希望大家指点一下,是否我还需要在文件系统中加入什么东东?谢谢

附录:
一 小程序
#include <qapplication.h>
#include <qlabel.h>
int main(int argc, char **argv)
{
        QApplication app (argc, argv);
  QLabel *hello = new QLabel("<h2><fontcolor=blue>Hello<i>Qt/Embedded!</i> </font> </h2>", 0);
  app.setMainWidget(hello);
  hello->show();
  return app.exec();
}

二 Qt/E 的交叉编译
 
  要将我们写好的程序发布到开发板上,我们需要对Qt/Embedded 重新编译,与前面在宿主机上编译类似,步骤如下:
1. Build Qt/Embedded
tar –xzvf qt-embedded-2.3.10-free.tar.gz
mv  qt-2.3.10  qt-2.3.10-target
export TMAKEDIR=$PWD/tmake-1.13
export QT2DIR=$PWD/qt-2.3.2
export QTEDIR=$PWD/qt-2.3.10-target
cd $QTEDIR
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
make  clean
./configure -xplatform linux-arm-g++ -no-xft -no-qvfb -depths 4,8,16,32
make
出现
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator new[](unsigned int)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator delete(void*)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `__cxa_pure_virtual'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator delete[](void*)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator new(unsigned int)'
collect2: ld returned 1 exit status
make[4]: *** [t1]
暂时不管它,不影响的。下面的第2步: “修改tmake 配置文件”  即可解决此类问题。

这步完成后,我们会在/$QTEDIR/lib/目录下面看到libqte.so libqte.so.2 libqte.so.2.3 libqte.so.2.3.10 这四个文件,我们可以使用file 命令来查看这个库文件是否是我们需要的在开发板上跑的库。
file libqte.so.2.3.10
libqte.so.2.3.10: ELF 32-bit LSB shared object, ARM, version 1 (ARM), stripped
离线tae0512

只看该作者 1楼 发表于: 2007-09-03
没有做过,期待高手~~~
离线thanwei
只看该作者 2楼 发表于: 2007-09-19
Please check your version of uclibc on
1)  /usr/local/arm/lib
2)  /target/lib

It may due to different version.
离线vampireda
只看该作者 3楼 发表于: 2007-10-28
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator new[](unsigned int)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator delete(void*)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `__cxa_pure_virtual'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator delete[](void*)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator new(unsigned int)'

你的QTE并没有编译成功,链接时没有链接到正确的libc或ulibc库上,检查一下
快速回复
限100 字节
 
上一个 下一个