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

把生成的库文件向下面的目录中也拷贝一份:
/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 armlibjpeg.

把生成的库文件向下面的目录中也拷贝一份:
/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


 

原创粉丝点击