|
大家好,本人也是新手,刚开始学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了。 |
|