首页| 论坛| 消息

标题:【提问】求助!交叉编译支持jpeg图像格式的qtopia时出现错误
作者:ssfww
日期:2005-11-24 20:07
内容:

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/ ..


#1 [修罗王1981 11-24 20:18]
你是缺少linux下的支持jpeg的库,可以上网上搜搜
#2 [ssfww 11-25 15:13]
还是有错误.
把交叉编译后的jpeg库和头文件拷贝到qt/lib和qt/include路径下,
配置QT/e 2.3.2:
./configure -system-jpeg -qconfig qpe -depths 16,24,32 -xplatform linux-arm-g++ -thread -I$QTDIR/include -L$QTDIR/lib
make通过.
配置Qtopia 1.7.0:
./configure -platform linux-arm-g++
make
错误信息为:
make -C libraries/qtopia
make[1]: Entering directory `/faback/armqtopia/qtopia/src/libraries/qtopia'
/faback/armqtopia/qt/bin/uic passwordbase_p.ui -o ./passwordbase_p.h
/faback/armqtopia/qt/bin/uic: error while loading shared libraries: /faback/armqtopia/qt/lib/libjpeg.so.62: ELF file OS ABI invalid
make[1]: *** Error 127
make[1]: Leaving directory `/faback/armqtopia/qtopia/src/libraries/qtopia'
make: *** Error 2
看来是jpeg库格式与宿主机不兼容, 将linux的jpeg库和头文件拷贝到qt/lib和qt/include路径下, 重新make qtopia时又出现错误:
make -C server
make[1]: Entering directory `/faback/armqtopia/qtopia/src/server'
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/qpe .obj/linux-arm-g++//server.o .obj/linux-arm-g++//serve
rinterface.o .obj/linux-arm-g++//launchertab.o .obj/linux-arm-g++//documentlist.
o .obj/linux-arm-g++//suspendmonitor.o .obj/linux-arm-g++//appicons.o .obj/linux
-arm-g++//taskbar.o .obj/linux-arm-g++//runningappbar.o .obj/linux-arm-g++//appl
auncher.o .obj/linux-arm-g++//stabmon.o .obj/linux-arm-g++//inputmethods.o .obj/
linux-arm-g++//systray.o .obj/linux-arm-g++//wait.o .obj/linux-arm-g++//shutdown
impl.o .obj/linux-arm-g++//launcher.o .obj/linux-arm-g++//launcherview.o .obj/li
nux-arm-g++//calibrate.o .obj/linux-arm-g++//transferserver.o .obj/linux-arm-g++
//packageslave.o .obj/linux-arm-g++//irserver.o .obj/linux-arm-g++//qcopbridge.o
.obj/linux-arm-g++//startmenu.o .obj/linux-arm-g++//main.o .obj/linux-arm-g++//
firstuse.o .obj/linux-arm-g++//base64.o .obj/linux-arm-g++//buf.o .obj/linux- ..
#3 [reserver 11-25 22:09]
用 file libjpeg.so.62,看一下是否为arm格式的.如果不是,就是编译jpeg库有问题
#4 [ssfww 11-27 09:34]
file /faback/armqtopia/qt/lib/libjpeg.so.62
/faback/armqtopia/qt/lib/libjpeg.so.62: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
是arm格式的啊?
我编译jpeg库的步骤如下:
(1) cd JPEGSRCPATH
CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc ./configure --enable-static --enable-shared
(2) gedit Makefile
修改Makefile
prefix=$QTDIR
AR= /usr/local/arm/2.95.3/bin/arm-linux-ar rc
AR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib
(3)make
make install
得到:libjpeg.so.62.0.0
libjpeg.so.62 (s-link to libjpeg.so.62.0.0)
libjpeg.so (s-link to libjpeg.so.62.0.0)
libjpeg.la
libjpeg.a
(4) cp $QTDIR/lib/libjpeg?* /usr/local/arm/2.95.3/arm-linux/lib
cd qt/lib
file libjpeg.so.62.0.0
libjpeg.so.62.0.0: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
修改了一些配置:
(1) qt/embeded:
./configure -system-jpeg -qconfig qpe -depths 16,24,32 -xplatform linux-arm-g++ -thread -I$QTDIR/include -L$QTDIR/lib -ljpeg
(2) qtopia:
./configure -xplatform linux-arm-g++
make -I$QTDIR/include
出现错误:
make -C libraries/qtopia
make[1]: Entering directory `/faback/armqtopia/qtopia/src/libraries/qtopia'
/faback/armqtopia/qt/bin/uic passwordbase_p.ui -o ./passwordbase_p.h
/faback/armqtopia/qt/bin/uic: error while loading shared libraries: /faback/armqtopia/qt/lib/libjpeg.so.62: ELF file OS ABI invalid
make[1]: *** Error 127
make[1]: Leaving directory `/faback/armqtopia/qtopia/src/libraries/qtopia'
make: *** Error 2
查看文件信息:
file /faback/armqtopia/qt/bin/uic
/faback/armqtopia/qt/bin/uic: ELF 32-bit LSB executable, Intel 80386, version 1
(SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
file /faback/armqtopia/qt/lib/libjpeg.so.62
/faback/armqtopia/qt/lib/libjpeg.so.62: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
请问问题出在哪里啊?谢谢大家!
#5 [reserver 12-03 10:37]
$QTDIR是否指向qt-2.3.7?echo 一下看看

<< 1 2 >> (1/2)

回复 发表
主题 版块