您的位置:首页 > 编程语言 > Qt开发

关于redhat5.4的最新QT SDK的安装后无法编译运行的解决办法(我弄了好几天亲测好用)

2012-12-04 14:32 525 查看
转载自:http://blog.sina.com.cn/s/blog_4b0d607401014uwg.html

关于QT安装时出现错误请参照我的上一篇文章http://hi.baidu.com/whyme%CE%DE%CF%DE/blog/item/91103d1a71f4aed5e2fe0b65.html

现在说一下编译运行出错的解决办法:

说明:redhat红帽5.4有点太老了,所以运行最新的QT时,出现了各种问题,最主要的就是各种库的问题:

(1)undefined reference to `FcFreeTypeQueryFace'的问题

需要更新fontconfig,我用的是fontconfig-2.6.0.tar.gz,2.5.0我试了,出现了很多错误,不知道为什么2.6.0可以,

附下载地址http://115.com/file/be9mdu2r

解压到/usr/src 进入后 ./autogen.sh然后终端中提示make,你就make,最后makeinstall。完成。./autogen.sh也可以输入./configure--sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man具体可能是./configure后指明了安在你想要安得地方吧(我用的是./autogen.sh)

如果期间遇到错误不要不耐烦,按照提示百度一下会有解决的办法的。

(2)undefined reference to 'FT_Library_SetLcdFilter'

这是由于freetype太旧的原因,也是一样,需要更新:

附下载地址:http://115.com/file/anwcxdfk

安装方法与(1)一样。也有安装(1)时可能有问题要先安装(2)这个自己尝试吧,我是先(1)后(2)的。

还有就是我的系统是红帽企业版5.4,不是的或者版本不一样的,我不知道我的方法有没有效果。

(3)接下来应该有的例程就可以编译运行了,但是还有不能运行的,那是因为你的glibc太旧了,这个是c动态库。必须注意的是,几乎所有的应用程序都依赖于glibc的动态库,重新编译安装glibc必须非常谨慎,一旦出错可能导致系统无法继续使用。所以强烈建议阅读源码目录下的INSTALL。

附下载地址:http://115.com/file/e749sc6n

第一步是配置glibc,出于安全的考虑,glibc不允许在源码目录树下编译,必须新建一个目录,然后在新建目录下运行configure,我就在/usr/src下建了一个glibc文件夹mkdirglibc。然后在新建目录里运行解压缩文件中的config,在运行这个之前,先在终端运行需要加上优化开关exportCFLAGS="-g -O2 -march=i686",然后运行../glibc/configure --prefix=/usr--disable-profile
--enable-add-ons --with-headers=/usr/include--with-binutils=/usr/bin
这样就不是默认安装的路径了安装在/usr下,这会将glibc安装为linux系统的标准库。

执行make -j。glibc的编译相当耗时,可以给make加上-j选项并行编译glibc。make-j

然后make install。

make时可能会有错误我就遇到了以下错误,我是这么解决的:

1、在编译glibc的过程中可能出现错误:“../sysdeps/i386/fpu/s_frexp.S:66:Error: invalid identifier for".ifdef"”,解决方法是:

1)、在glibc源码目录下找到文件:nptl/sysdeps/pthread/pt-initfini.c,找到第46行附近:asm("\n#include "defs.h"");在其后添加代码:

asm ("\n#if defined __i686 &&defined __ASSEMBLER__");

asm ("\n#undef __i686");

asm ("\n#define __i686 __i686");

asm ("\n#endif");

2)、在glibc源码目录下找到文件:sysdeps/unix/sysv/linux/i386/sysdep.h,找到第30行附近:#include<tls.h>,在其后添加代码:

#if defined __i686 && defined__ASSEMBLER__

#undef __i686

#define __i686 __i686

#endif

重新make

2、在编译glibc的过程中可能出现错误:“./sysdeps/i386/i686/multiarch/strcmp.S:78:Error: Error: unrecognized symbol type"gnu_indirect_function"unrecognized symbol type"gnu_indirect_function"”,原因是没有安装新版的binutils,如果依照前面的步骤安装了binutils-2.21应该不会出现该错误。(注第2个错误我没遇到)

注:还有一个地方不知道是哪一步遇到错误了需要安装libxml我在红帽的系统镜像中的server中找到了三个相关文件libxml2*.rpm安装即可!!!!!!

至此,重启reboot,打开QT运行例程,可能还有问题,我的就是还是有问题,解决办法如下:

把QT的安装目录和QT中的bin都添加为环境变量,在/etc/profile下,具体怎么填您应该知道吧,这里不提了。source/etc/profile一下

然后再点击QT的左边栏的项目在构建和运行的选项中,您可能哪里没有选择,一定要让你的项目有效和目录正确,QT的版本正确!!!QT的gcc编译目录正确,gcc一般用的是QT文件中自带的!!如果还不行,那就在你的在项目目录项运行makeclean!!如果还不对!!!vi Makefile可能是这里有问题,如果不会改,就干脆删了rmMakefiel。然后再在QT中运行一下。

至此,终于完事啦,希望我的文章能给你带来一些帮助,如果哪里有问题留言哦。!!!! --by whyme无限!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐