Ⅰ 求助QT5.4 安装在win8.1后无法编译
关于QT安装时出现错误请参照我的上一篇文章http://hi..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/be9m2r
解压到/usr/src 进入后 ./autogen.sh 然后终端中提示make,你就make,最后make install。完成。./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文件夹mkdir glibc。然后在新建目录里运行解压缩文件中的config,在运行这个之前,先在终端运行需要加上优化开关export CFLAGS="-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文件中自带的!!如果还不行,那就在你的在项目目录项运行make clean!!如果还不对!!!vi Makefile 可能是这里有问题,如果不会改,就干脆删了rm Makefiel。然后再在QT中运行一下。