标题:交叉编译 qte 加 -system-jpeg 出现如下错误,大家帮忙解决
作者:dongdong
日期:2006-06-15 11:00
内容:
arm-linux-2.95.3交叉编译支持jpeg图像格式的qtopia-free-1.7.0时出现错误:
首先建立目录armqtopia,在此目录下解压qt-x11-2.3.2.tar.gz, qt-embedded-2.3.7.tar.gz 和 qtopia-free-1.7.0.tar.gz ,得到三个目录,更名为qt-x11,qt,qtopia
然后设置:
export QTDIR=$PWD/qt
export QPEDIR=$PWD/qtopia
export TMAKEDIR=$PWD/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/bin:$LD_LIBRARY_PATH
进入qt-x11目录,进行如下操作:
export QTDIR=$PWD
./configure -system-jpeg -thread -no-xft -no-opengl -sm
make
make -C src/moc
cp src/moc/moc bin
make -C src
make -C tools/designer
make -C tools/qvfb
cp tools/qvfb/qvfb bin
strip bin/uic bin/moc bin/designer bin/qvfb
然后回到armqtopia目录,将qt-x11得到的uic,moc,designer,qvfb拷贝到qt目录的bin下
cd ..
cp -f qt-x11/bin/?* qt/bin
将jpeg库交叉编译,然后拷贝到qt/lib下.
进入qt目录,进行配置,然后make
cd qt
cp ../qtopia/src/qt/qconfig-qpe.h src/tools/
./configure -qconfig qpe -depths 16,24,32 -xplatform linux-arm-g++ -thread -system-jpeg
make
然后对qtopia进行配置和编译:
cd qtopia/src
./configure -xplatform linux-arm-g++
make
编译qt-x11和qt-embeded时,均可以通过,但当编译qtopia时,出现错误;
arm-linux-gcc -L/faback/armqtopia/qtopia/lib -Wl,-rpath,/faback/armqtopia/qtopia/lib -L/faback/armqtopia/qt/lib -Wl,-rpath,/faback/armqtopia/qt/lib -o /faback/armqtopia/qtopia/bin/sysinfo .obj/linux-arm-g++//memory.o .obj/linux-arm-g++//graph.o .obj/linux-arm-g++//load.o .obj/linux-arm-g++//storage.o .obj/linux-arm-g++//versioninfo.o .obj/linux-arm-g++//sysinfo.o .obj/linux-arm-g++//main.o .obj/linux-arm-g++//moc_memory.o .obj/linux-arm-g++//moc_graph.o .obj/linux-arm-g++//moc_load.o .obj/linux-arm-g++//moc_storage.o .obj/linux-arm-g++//moc_versioninfo.o .obj/linux-arm-g++//moc_sysinfo.o -lqpe -lqtopia -lqte -lm
/faback/armqtopia/qt/lib/libqte.so: undefined reference to `__fixsfsi'
/faback/armqtopia/qt/lib/libqte.so: undefined reference to `__subsf3'
/faback/armqtopia/qt/lib/l ..
#1 [shiroki 06-15 12:14]
你的libjpeg是动态库吗
要cp到toolchain的target/lib目录里,其他的目录都得拿-L指定,toolchain的ld才能找得到。
#2 [dongdong 06-16 10:12]
我的libjpeg是动态的,而且按照你说的方法拷贝到了toolchain的lib 下面,但是在编译 qtopia 的时候还是出现 上面的那些错误,麻烦在帮忙看看吧!
#3 [shiroki 06-19 11:07]
报的这几个undefined reference看起来不像是libjpeg里的阿
你先确定一下是哪个库的symbol没有找到, 才能决定下一步怎么处理
toolchain里有两个lib目录,你cp的是哪个?应该cp到目录层数稍微深点儿的那个
#4 [dongdong 06-19 15:32]
我拷贝到/usr/local/2.95.3/arm-linux/lib 下面了 这个就是最深的了.但是效果一样
而且我用readelf -a libqte.so.3.2.1 | grep jpeg 查看 libqt.so 所支持的库的时候.显示了很多jpeg的函数和变量.说Jpeg 已经在 qte.so . 里面了 上面出现的错误好像跟浮点运算有关系,请斑竹帮忙!!!!这个问题郁闷了我和久了.
#5 [shiroki 06-19 16:44]
我也不明白亚
试试把这个命令行里的arm-linux-gcc改成arm-linux-g++看看
arm-linux-gcc -L/faback/armqtopia/qtopia/lib -Wl,-rpath,/faback/armqtopia/qtopia/lib -L/faback/armqtopia/qt/lib -Wl,-rpath,/faback/armqtopia/qt/lib -o /faback/armqtopia/qtopia/bin/sysinfo .obj/linux-arm-g++//memory.o .obj/linux-arm-g++//graph.o .obj/linux-arm-g++//load.o .obj/linux-arm-g++//storage.o .obj/linux-arm-g++//versioninfo.o .obj/linux-arm-g++//sysinfo.o .obj/linux-arm-g++//main.o .obj/linux-arm-g++//moc_memory.o .obj/linux-arm-g++//moc_graph.o .obj/linux-arm-g++//moc_load.o .obj/linux-arm-g++//moc_storage.o .obj/linux-arm-g++//moc_versioninfo.o .obj/linux-arm-g++//moc_sysinfo.o -lqpe -lqtopia -lqte -lm