主题 : 【求教】Qtopia编译出错:libQtGui.so: undefined reference to `deflateInit2_' 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 20169
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2010-04-27
最后登录: 2010-07-23
楼主  发表于: 2010-05-04 21:06

 【求教】Qtopia编译出错:libQtGui.so: undefined reference to `deflateInit2_'

我的编译环境是rh9.0
交叉编译器是arm-none-linux-gnucabi-all    版本是4.2.3
前几天在编译qtopia-core-opensource-4.3.3的时候就遇到过这个问题,当时查了资料明白是zlib在作怪,于是自己下载了zlib解压安装,在配置那里添加自己的zlib路径    就可以搞定,由于qtopia-core-opensource没有主程序,我想再编译个qtopia-opensource 在按照网上教程一步一步做下来的时候,在gmake的时候就又发生了上述的错误?
先说一下的我操作步骤:
1、tar  xzvf  qtopia-opensourse-4.3.3.tar.gz
2、修改源码:
# vi src/libraries/qtopia/qtimezone.cpp
将/usr/share/zoneinfo/ 改为/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/,保存退出。
# vi src/settings/systemtime/settime.cpp(可能是版本问题,我下的4.3.3没有发现这个)
将318行的 /usr/share/zoneinfo/ 改为/mnt/nfs/qtopia4/qtopiatslibtarget/zoneinfo/ ,保存退出。
3、裁减Qtopia core的库
# vi qtopiacore/qconfig-qpe.h
首先注释掉关于鼠标光标的宏定义,让程序运行时,触摸屏中央有光标出现:
// Qtopia Core
/*
#ifndef QT_NO_QWS_CURSOR
#  define QT_NO_QWS_CURSOR
#endif
*/
/*
#ifndef QT_NO_QWS_MOUSE
#  define QT_NO_QWS_MOUSE
#endif
#ifndef QT_NO_QWS_MOUSE_AUTO
#  define QT_NO_QWS_MOUSE_AUTO
#endif
*/
其它宏定义根据需要进行注释。
保存后将qconfig-qpe.h拷贝到global目录。
# cp qtopiacore/qconfig-qpe.h qtopiacore/qt/src/corelib/global/qconfig-qpe.h
3、注释掉其他文件里的QT_NO_QWS_CURSOR的定义
# vi qtopiacore/qt/src/corelib/global/qfeatures.h
注释掉如下内容:
/*
#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
#define QT_NO_QWS_CURSOR
#endif
*/
保存退出。
# vi qtopiacore/qt/src/corelib/global/qglobal.h
注释掉以下内容:
// #define QT_NO_QWS_CURSOR
4、在路径src/libraries/qtopiabase/下复制(这一步也搞不懂)
cp -f custom-linux-generic-g++.cpp custom-linux-arm-g++.cpp
cp -f custom-linux-generic-g++.h custom-linux-arm-g++.h
5、这里就是配置了
echo "yes" |../qtopiainstall/configure -edition phone -xplatform linux-arm-g++ -arch arm -no-qvfb  -release  -no-modem -quicklaunch -defaultbuttons phone -prefix /root/workdir/filesys/opt/qtopia -no-bluetooth -no-drm -no-infrared -extra-qt-config "–system-zlib  –I /home/fan/QTE/qtopia/zlib-1.2.3/build/include  –L /home/fan/QTE/qtopia/zlib-1.2.3/build/lib  -qt-gif -qt-libpng -qt-libmng -qt-libjpeg"  -extra-qtopiacore-config “-depths 16,24 -qt-mouse-tslib –I /home/fan/QTE/tslib1.4/tslib/build/include  –L /home/fan/QTE/tslib1.4/tslib/build/lib”
这里我指定了 zlib的库和头文件的路径,编译的时候依然出错!
查了网上众多的解决方案,感觉有说服力的是“原因是你原来系统上有旧版本的QT,在连接的时候,连接到旧版的QT库上去了(如果没有旧版qt,在没有配置好qt库目录的情况下,也会出现这种情况) 先修改/etc/ld.so.conf 文件, 现在比较新的linux 是 /etc/ld.so.conf.d/qtxxx.conf 文件 把文件中的旧版本Qt库的路径去除,加入新版本的qt的编译目录下的lib目录的绝对目录 比如,你的Qt编译目录为/home/qt4.0.1 那么在 /etc/ld.so.conf 或者/etc/ld.so.conf.d/qtxxx.conf 目录中添加(如果有旧的,就注释掉): /home/qt4.0.1/lib 然后运行 ldconfig 使之生效,这样qt的默认库就指到你刚编译好的那个lib目录下了(http://unixresources.org/linux/clf/kylix/archive/00/00/58/51/585115.html)。”能试的基本都试过了,还是不得行!
     希望得到达人的解释和帮助,在这里说声谢谢了!


级别: 新手上路
UID: 16599
精华: 0
发帖: 22
金钱: 110 两
威望: 22 点
综合积分: 44 分
注册时间: 2010-03-19
最后登录: 2017-09-13
1楼  发表于: 2011-06-07 14:18
你的问题解决了吗?我现在也遇到跟你一样的问题的了,麻烦你跟我说说说怎么回事的了,先谢谢的了