天嵌 ARM开发社区

 找回密码
 注册
查看: 5137|回复: 8

关于建立QT4开发平台时出现错误的解决方案

[复制链接]
nasa1008 发表于 2010-4-7 20:32:46 | 显示全部楼层 |阅读模式
大家好,本人也是新手,刚开始学ARM。
感觉遇到问题时得到了一些高手的指点,但最终解决问题还是要靠自己的。

今天我编译QT4时出现下列问题:
第一个问题:提示找不到krb5.h,由于RedHat9是将kerberos的include file放在/usr/kerberos/include里,而不是/usr/include.提示如下:

In file included
from /usr/include/openssl/ssl.h:179,
                 from qsslsocket_openssl_p.h:83,
                 from qsslsocket_openssl_symbols_p.h:68,
                 from qsslcertificate.cpp:119:
/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory
In file included from /usr/include/openssl/ssl.h:179,
from qsslsocket_openssl_p.h:83,
                                                                                     from qsslsocket_openssl_symbols_p.h:68,
                                                                            from qsslcertificate.cpp:119:
/usr/include/openssl/kssl.h:132: 'krb5_enctype' is used as a type, but is not
                                                                            defined as a type.
                                                                            /usr/include/openssl/kssl.h:134: parse error before `*' token
                                                                                /usr/include/openssl/kssl.h:147: parse error before `*' token
                                                                                /usr/include/openssl/kssl.h:151: parse error before `*' token
                                                                                /usr/include/openssl/kssl.h:153: parse error before `*' token
                                                                                /usr/include/openssl/kssl.h:155: parse error before `*' token
                                                                                /usr/include/openssl/kssl.h:157: parse error before `*' token
                                                                                /usr/include/openssl/kssl.h:159: `krb5_context' was not declared in this scope
                                                                                /usr/include/openssl/kssl.h:159: parse error before `,' token
                                                                                /usr/include/openssl/kssl.h:160: `krb5_context' was not declared in this scope
                                                                                /usr/include/openssl/kssl.h:160: parse error before `,' token
                                                                                /usr/include/openssl/kssl.h:163: `krb5_timestamp' was not declared in this    scope
                                                                                /usr/include/openssl/kssl.h:163: parse error before `,' token
                                                                                /usr/include/openssl/kssl.h:165: parse error before `*' token
                                                                                /usr/include/openssl/kssl.h:167: `krb5_enctype' was not declared in this scope
                                                                                /usr/include/openssl/kssl.h:167: parse error before `,' token
                                                                            gmake[1]: *** [.obj/release-shared/qsslcertificate.o] Error 1
                                                                                gmake[1]: Leaving directory `/study/qt/qt-x11-opensource-src-4.3.2/src/network'
                                                                                gmake: *** [sub-network-make_default-ordered] Error 2

在网上搜索了一下,问题解决方案如下,希望对大家有帮助,也希望大家把自己遇到问题后解决问题的办法发到论坛上来。

问题的原因是因为redhat9 没有openssl,在configure时,加上“-no-openssl”就OK了
另外还有相关的一些东西如下:
1.       系统 Red Hat Linux 9

源码下载ftp://ftp.trolltech.com/qt/source/

qt-embedded-linux-opensource-src-4.5.2.tar.gz

2.       #tar –zxvf qt-embedded-linux-opensource-src-4.5.2.tar.gz

//*************for x86************************

#./configure

      O

      Yes

      #gmake

      #gmake install

      //*************for arm*************************

      #./configure –embedded arm –little-endian

      O

      Yes

      #gmake

      #gmake install



      (Qt is now configured for building.Just run ‘gmake’.

Once everything is built, you must run ‘gmake install’.

Qt will be installed into /usr/local/Trolltech/QtEmbedded

-4.5..2-arm)





                  

Problem:

(1)               在#gmake时报错:

In file included from /usr/include/openssl/ssl.h:179,
from qsslsocket_openssl_p.h:88,
from qsslsocket_openssl_symbols_p.h:73,
from qsslcertificate.cpp:124:
/usr/include/openssl/kssl.h:72:18: krb5.h: 没有那个文件或目录
In file included from /usr/include/openssl/ssl.h:179,
from qsslsocket_openssl_p.h:88,
from qsslsocket_openssl_symbols_p.h:73,
from qsslcertificate.cpp:124:
/usr/include/openssl/kssl.h:132: 'krb5_enctype' is used as a type, but is not

这是因为 Red Hat Linux 的 krb5-devel 套件把 kerberos 的 include file 放到了 /usr/kerberos/include 里面,而不是一般位置的 /usr/include 这个目录。而 openssl 支持 kerberos,因此在 compile 使用到 openssl 的程式就很容易发生找不到 kerberos 的 include file 的错误。

解決的办法相当简单,首先当然要确定 krb5-devel 以及 krb5-libs 等套件确实有安裝在系统上,而不是根本没安裝;接下來,建立以下的 symbolic links:
       ln -s /usr/kerberos/include/com_err.h /usr/include/
        ln -s /usr/kerberos/include/profile.h /usr/include/
        ln -s /usr/kerberos/include/krb5.h /usr/include/

(2)在碰到问题(1)后,解决在#gmake,产生ERROR:

   text/qfontengine_ft.cpp: In member function `bool
   QFontEngineFT::init(QFontEngine::FaceId, bool, QFontEngineFT::GlyphFormat)':
text/qfontengine_ft.cpp:710: `FT_Select_Size' undeclared (first use this
   function)
text/qfontengine_ft.cpp:710: (Each undeclared identifier is reported only once
   for each function it appears in.)
gmake[1]: *** [.obj/release-shared-emb-x86/qfontengine_ft.o] Error 1
gmake[1]: Leaving directory `/u01/home/soft/qt/qt-embedded-linux-opensource-src-4.5.1-x86/src/gui'
gmake: *** [sub-gui-make_default-ordered] Error 2



解决方法:

vi/qt-embedded-linux-opensource-src-4.5.2/src/gui/text/qtonttengine_ft.cpp, 注释掉710行,

//FT_Select_Size(face, i);

第二个问题:(这个问题我自己没有看到,但是在网上看到有解决方案就拿过来了)TIFFReadRGBAImageOriented' undeclared

                      原因:RedHat 9里的没有:

                           TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(tiffImage.bits()), ORIENTATION_TOPLEFT, 0))函数.
解决方法:将:解压目录+src/plugins/imageformats/tiff/qtiffhandler.cpp里的:

                  TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(tiffImage.bits()), ORIENTATION_TOPLEFT, 0))         

       改为:

           TIFFReadRGBAImage(tiff, width, height, reinterpret_cast<uint32 *>(tiffImage.bits()), 0)

就可以#make了。
 楼主| nasa1008 发表于 2010-4-7 21:26:02 | 显示全部楼层
出了点问题:
vi/qt-embedded-linux-opensource-src-4.5.2/src/gui/text/qtonttengine_ft.cpp, 注释掉710行,
//FT_Select_Size(face, i);

应该是:
vi/qt-embedded-linux-opensource-src-4.5.2/src/gui/text/qfontengine_ft.cpp
0354030w 发表于 2010-4-7 23:28:34 | 显示全部楼层
LZ爱死你了,我也是这个问题编译不过去!嘻嘻,赶紧去试试!
0354030w 发表于 2010-4-8 00:26:55 | 显示全部楼层
请问LZ是不是修改x86_qt4.5_build里面的这一句
if [ -f Makefile ] ; then
        echo "the Makefile is already !"
else
        echo "Config Qt4.5 now, please wait ..."
        echo yes | ../../qt-embedded-linux-opensource-src-4.5.0/configure -prefix /opt/EmbedSky/qt-4.5/__install/x86/ -release -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -nomake demos -nomake examples -silent &&
        echo "Finished config Qt4.5 !"
加上-no-openssl?
 楼主| nasa1008 发表于 2010-4-8 13:09:49 | 显示全部楼层
是的 加在configure和&&的都可以
0354030w 发表于 2010-4-8 22:48:00 | 显示全部楼层
QT PC版安装成功!ARM版的失败,请问是不是
修改configure -embedded arm -little-endian就可以了?
 楼主| nasa1008 发表于 2010-4-9 08:11:30 | 显示全部楼层
据我目前安装的情况来看,QT的ARM板似乎没有办法在redhat上安装成功,不知道别人有没有成功过,可能这就是为什么天嵌在手册中注明要用Fedora了吧。
0354030w 发表于 2010-4-9 18:33:18 | 显示全部楼层
那就真的杯具了!难道要全部重新安装!
pengy 发表于 2011-3-7 15:33:56 | 显示全部楼层
我也是遇到这些问题,多谢,
我在Redhat ace3上编译,正在进行中。。。。如果成功再来发帖!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-28 03:27 , Processed in 1.042032 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表