errro
来源:互联网 发布:seo搜索好学吗 编辑:程序博客网 时间:2024/06/06 20:31
/arm2410s/gui/Qt/tools/usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/bin/ld: warning: libjpeg.so.62, needed by /root/src/qt-2.3.10/lib/libqte.so, not found (try using -rpath or -rpath-link)
/arm2410s/gui/Qt/tools/usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/lib/crt1.o(.text+0x30): In function `_start':
: undefined reference to `main'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `operator new[](unsigned int)'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_read_scanlines'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `ts_close'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_set_defaults'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `ts_config'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_start_decompress'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `operator delete(void*)'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_destroy_decompress'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `ts_read'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_std_error'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_CreateDecompress'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `ts_read_raw'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `ts_open'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `__cxa_pure_virtual'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_read_header'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `operator delete[](void*)'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_start_compress'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_destroy_compress'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `ts_fd'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_finish_decompress'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_resync_to_restart'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_CreateCompress'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_finish_compress'/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `operator new(unsigned int)'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_set_quality'
/root/src/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_write_scanlines'collect2: ld returned 1 exit status
找的解决办法:
一 Build Qtopia for arm
2.tslib的链接问题:
如果编译Qtopia时,tslib没有正确链接上,则会发生如下错误:
Warning信息:
/qte_arm/qtopia-1.7.0/lib/libqtopia.so需要的libuuid.so.1找不到。说明链接路径有问题。将libuuid.so*拷到可链接的库目录下,或者拷到/qte_arm/qtopia-1.7.0/lib下,但是要把它加入LD_LIBRARY_PATH中。但奇怪的是这样并不能解决问题(有可能是之前环境变量设置脚本中没写export而导致实际上并没有将/qte_arm/qtopia-1.7.0/lib成功加入到LD_LIBRARY_PATH中去,可用env命令查看当前的环境变量进行检查)。是不是应该拷的是libuuid.a呢?的确如此,见前面(已经过实践)不过一种真正能解决问题的办法是Build Qtopia部分的开头阴影区两行。
Error信息:
由于tslib(touch screen library)没有链接上。说是libqte.so中有undefined reference to ‘ts_close’等。说明在编译qte时生成的库文件libqte.so可能就没有链接上tslib。
①修改了qte-2.3.7/src下的Makefile(据说是tmake生成的?),将下面一行:
########## Compiler, tools and options
LIBS = $(SUBLIBS) $(SYSCONF_QTLIBS)
后加上 –L ../lib –lts,即改为:LIBS = $(SUBLIBS) $(SYSCONF_QTLIBS)–L ../lib –lts
然后对qte重新编译,然后再编译qtopia即可。
-L应该是指定链接目录,../lib即qtopia-1.7.0/lib,事先已经将tslib共享库文件copy到该目录下,-lts是指支持对tslib共享库的链接。大概如此,具体还要进一步学习Makefile的相关知识。不知道-L后不指定目录行不行?
可参考:
http://www.qtcn.org/bbs/read.php?tid=3728
②第二次实践,突发奇想,在修改/qte_arm/qte-2.3.7/configs/linux-arm-g++-shared文件时,不但将# Linking applications下的SYSCONF_LIBS= -lm 修改为SYSCONF_LIBS = -lm -lts,还将# Linking shared libraries下的SYSCONF_LINK_SHLIB = arm-linux-gcc后加了-lts。这样就一次通过了,没有出现上述的tslib链接问题,也不用修改qte-2.3.7/src下的Makefile。
二 编译的时候加上 -ljpeg 命令行参数
三
1.没有#include "highgui"2.没有包含highguiXXX.lib。这是你最主要查的方向。3.没有按照安装要求配置路径。
.usr/local/hybus-arm-linux-R1.1/arm-linux/bin/ld: warning: libjpeg.so.62, needed by /usr/local/qt-2.3.10/lib/libqte.so, not found (try using -rpath or -rpath-link)
/usr/local/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_read_scanlines'...........................
解决方法:
本文记载步骤和排错过程,用到的源码包有:qt-embedded-2.3.10-free.tar.gz、qtopia-free-source-2.1.1.tar.gz、jpegsrc.v6b.tar.gz、e2fsprogs-1.38.tar.gz
步骤主要有:
1. 注意设置环境变量:QTEDIR、QPEDIR、PATH、LD_LIBRARY_PATH等
2. 交叉编译qte
./configure –qconfig qpe -system-jpeg -no-xft -gif -qvfb -depths 4,8,16,32 –xplatform linux-arm-g++
3. 交叉编译qtopia
./configure -edition pda -no-qtopiadesktop -displaysize 480X640 –xplatform linux-arm-g++
在编译过程中遇到的主要错误有:
1.usr/local/hybus-arm-linux-R1.1/arm-linux/bin/ld: warning: libjpeg.so.62, needed by /usr/local/qt-2.3.10/lib/libqte.so, not found (try using -rpath or -rpath-link)
/usr/local/qt-2.3.10/lib/libqte.so: undefined reference to `jpeg_read_scanlines'...........................
解决方法:
从http://freshmeat.net/redir/libjpeg/5665/url_tgz/jpegsrc.v6b.tar.gz下载jpegsrc.v6b.tar.gz解压并进入解压的目录。
tar -xzf jpegsrc.v6b.tar.gz
cd jpeg-6b
[root@localhost jpeg-6b]# ./configure --enable-shared
修改生成的Makefile文件:
prefix = qt-embeddedd的文件夹路径(eg: /usr/local/qt-2.3.10)
CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc
AR= /usr/local/arm/2.95.3/bin/arm-linux-ar rc
AR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib
保存
在你的qt-embedded中建立man/man1文件家,否则安装jpeg库时会出错
[root@ localhost jpeg-6b]#mkdir -p qt-2.3.10/man/man1
最后:
[root@ localhost jpeg-6b]# make
[root@ localhost jpeg-6b]# make install
就可以给qt-embedded添加好for arm的libjpeg库.
把生成的库文件向下面的目录中也拷贝一份:
/usr/local/hybus-arm-linux-R1.1/arm-linux/lib
/usr/lib
./configure 时要特别注意各个设置间只有一个空格.我在编译时就曾遇到了好几次,因为是直接粘贴的,也没太注意,总是到这一步就进行不下去了,后来才发现是中间多了些空格,挺郁闷的
2. qpeapplication.cpp: In method `void QPEApplication::systemMessage(const QCString &, const QByteArray &)':
qpeapplication.cpp:2175: warning: unused variable `int old'...............
解决方法:在$QPEDIR/src/libraries/qtopia目录下执行
cp custom-linux-ipaq-g++.cpp custom-linux-myarm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-myarm-g++.h
3. 遇到关于libuuid的错误时.................
解决办法:交叉编译e2fsprogs-1.38:
./configure –host=arm-linux –with-cc=arm-linux-gcc –with-linker=arm-linux-ld –enable-elf-shlibs –prefix=/usr/local/qtopia-2.1.1
make
make install
这样就将libuuid库安装到了qtopia目录下。
再执行cp –r /usr/local/e2fsprogs-1.38/lib/uuid /usr/local/qtopia-2.1.1/include
使得qtopia能够找到头文件。
呵呵,简单的叙述一下过程,希望对需要的人有所帮助!
解决方法:在$QPEDIR/src/libraries/qtopia目录下执行
cp custom-linux-ipaq-g++.cpp custom-linux-myarm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-myarm-g++.h
从http://freshmeat.net/redir/libjpeg/5665/url_tgz/jpegsrc.v6b.tar.gz下载jpegsrc.v6b.tar.gz解压并进入解压的目录。
tar -xzf jpegsrc.v6b.tar.gz
cd jpeg-6b
[root@localhost jpeg-6b]# ./configure --enable-shared
修改生成的Makefile文件:
prefix = qt-embeddedd的文件夹路径(eg: /usr/local/qt-2.3.10)
CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc
AR= /usr/local/arm/2.95.3/bin/arm-linux-ar rc
AR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib
保存
在你的qt-embedded中建立man/man1文件家,否则安装jpeg库时会出错
[root@ localhost jpeg-6b]#mkdir -p qt-2.3.10/man/man1
最后:
[root@ localhost jpeg-6b]# make
[root@ localhost jpeg-6b]# make install
就可以给qt-embedded添加好for arm的libjpeg库.
把生成的库文件向下面的目录中也拷贝一份:
/usr/local/hybus-arm-linux-R1.1/arm-linux/lib
/usr/lib
2. qpeapplication.cpp: In method `void QPEApplication::systemMessage(const QCString &, const QByteArray &)':
qpeapplication.cpp:2175: warning: unused variable `int old'...............
解决方法:在$QPEDIR/src/libraries/qtopia目录下执行
cp custom-linux-ipaq-g++.cpp custom-linux-myarm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-myarm-g++.h
3. 遇到关于libuuid的错误时.................
解决办法:交叉编译e2fsprogs-1.38:
./configure –host=arm-linux –with-cc=arm-linux-gcc –with-linker=arm-linux-ld –enable-elf-shlibs –prefix=/usr/local/qtopia-2.1.1
make
make install
这样就将libuuid库安装到了qtopia目录下。
再执行cp –r /usr/local/e2fsprogs-1.38/lib/uuid /usr/local/qtopia-2.1.1/include
使得qtopia能够找到头文件。
呵呵,简单的叙述一下过程,希望对需要的人有所帮助!
解决方法:在$QPEDIR/src/libraries/qtopia目录下执行
cp custom-linux-ipaq-g++.cpp custom-linux-myarm-g++.cpp
cp custom-linux-ipaq-g++.h custom-linux-myarm-g++.h