坛子里似乎已经有人编译出Qt5了,不过大多有问题,不是缺少opengl就是缺少openssl,还有缺少webkit的,本文提供的仍然不能说是绝对完整的,不过相对以前的编译方法也完整了很多。这个方法编译出来的Qt5包含openssl、opengl和webkit首先要准备开发环境,也就是Qt5的依赖软件包。Qt5在编译过程中需要依赖network模块需要openssl,openssl又依赖zlib和gmp,gmp又依赖nasm,而这些软件包在编译时又依赖msys和mingw编译脚本需要perl、python、rubywebkit部分需要icu先讲32位的1)准备msys和mingw。我使用的是niXman的套装复制代码 export http_proxy='http://用户名:密码@服务器:端口'export ftp_proxy='http:// 用户名:密码@服务器:端口' 这样每次启动msys都会加载代理服务器设置然后把mingw的bin和i686-w64-mingw32下的bin都加入系统PATH变量中。在我的电脑上点右键,在“系统属性里面”的“高级”选项卡,点下面的环境变量,PATH中各个目录以分号分隔为了确保环境变量设置正确gcc -v测试一下2)复制代码 ./configure --prefix=/mingwmakemake install 3)复制代码 unzip zlib127.zipcd zlib-1.2.7make –f win32/Makefile.gcccp libz.a libz.dll.a /mingw/i686-w64-mingw32/libcp zlib.h zconf.h /mingw/i686-w64-mingw32/includecp zlib1.dll /mingw/bin 4)复制代码 tar –jxvf gmp-5.0.5.tar.bz2cd gmp-5.0.5./configure--prefix=/mingw/i686-w64-mingw32 --enable-shared --disable-static --disable-cxxmakemakecheckmake install 要注意gmp中C++的部分和msvcrt有冲突,所以必须要屏蔽掉,否则make check过不去5)复制代码 tar -zxvf openssl-1.0.1c.tar.gzcdopenssl-1.0.1c./Configuremingw --prefix=/mingw enable-gmp experimental-jpake enable-krb5 enable-md2enable-rc5 enable-rfc3779 enable-shared experimental-store zlib-dynamic 修改Makefile,在EX_LIBS字段添加-lgmp,你也可以顺便把gcc编译参数也给改了,默认是i486优化的,你可以根据你自己的cpu修改优化目标复制代码 make dependmakemake testmakeinstall 复制代码 perl -vpython -Vruby -v 测试一下,注意python后面的V是大写的7)复制代码 ./configure --prefix=/mingw/i686-w64-mingw32makemake install 8)终于到了Qt5了复制代码 configure -prefix your_install_dir -opensource -debug-and-release -opengl desktop -nomake-examples -nomake-demos 因为前面安装了ICU,所以系统会自动检测,发现ICU后会自动开启webkit编译选项,另外prefix是安装目录;-debug-and-release是为了开发需要;-opengl必须要设定为desktop,因为默认是es2的,而系统中如果没有安装angle会编译出错,楼主本人是搞桌面开发的,不用es2,所以没有经验;-nomake-examples和-nomake-demos可以大大节省编译时间,例子通常都不会有人去看的其他的在4.x时代经常用到的参数,在5时代终于全部变成自动检测了,系统会自动检测zlib、openssl、PCRE、fontconfig等等有必要提及的是Qt5的编译脚本默认开启了avx2指令集及更早的多媒体指令集,如果你的CPU不支持这么新的指令集,需要将其屏蔽掉可以configure -h看一下到底有那些选项可以使用,然后再调整然后复制代码 mingw32-make 在编译webkit时会遇到错误,提示一个makefile中925行不可识别。其实type nul>命令就是dos命令行创建空文件的命令,编译脚本调用msys的sh去解释当然解释不了。解决方法很简单,你自己手动创建那个空文件,然后把那行注释掉,在行首加一个#就行了。然后继续复制代码 mingw32-make 你可能会问为什么不能一开始就修改好那个文件,然后再mingw32-make,那是因为这个文件是在make中生成的,不是一开始就有的,所以必须得等到时候才行经过漫长的等待之后,终于make完了,再复制代码 mingw32-make install 大功告成64位的问题要多一些,最重要的就是要在编译每一个库时添加-m64参数,还好niXman已经替我们解决了,他的64位包是默认添加-m64参数的,而他的32位包是默认添加-m32参数的还有openssl编译时Configure的参数中的mingw要换成mingw64楼主在编译webkit时遇到了缺文件的问题,而且一直也没找到解决方法,所以webkit组件只好先放下了,configure的时候加上-no-icu参数就可以不编译webkit,或者你也可以干脆把webkit目录删掉要注意的是http://qt-project.org/forums/viewthread/22883/已经明确说明Qt-5.0.0中webkit对mingw的支持有问题,楼主已经很不容易了,也奉劝大家别再试了,等下一版Qt吧不过没有webkit的话就不会自动编译qt-creator-2.6.1,你就得自己下载源代码手动编译了 jerryh 2012-12-22 22:31 这个版本我反复试了几次不成功..等会再试试.正在用 RubenVB personal builds 编译,这个好象速度要快不少其它GCC版本总是编译出错.,不用再试了 roywillow 2012-12-22 22:33 膝盖已烂,给跪……network不用openssl也可以编译通的,所以我觉得那个“需要”不太妥当哦。另外这里: By default, an SSL-enabled Qt library dynamically loads any installed OpenSSL library at run-time. However, it is possible to link against the library at compile-time by configuring Qt with the -openssl-linked option. 我可不可以理解为,Qt在编译的时候不一定需要openssl库存在,它可以在运行的时候探测,并且依然能使用ssl的功能?但是不清楚如果编译时没有装openssl,那么这个Qt是不是SSL-enabled的呢?至于webkit,还是再观望一段时间吧另外你的Qt5是在msys下编译的? jerryh 2012-12-22 22:34 目前用MinGW编译是真心地不容易啊. roywillow 2012-12-22 22:36 我觉得我有必要去学着接受用msvc编译器了,并且用官方的预编译库……不过一直没搞懂msvc是只带着个编译器呢,还是连winsdk和dxsdk都带上了呢…… XChinux 2012-12-22 23:57 引用第4楼roywillow于2012-12-22 22:36发表的 回 3楼(jerryh) 的帖子 :我觉得我有必要去学着接受用msvc编译器了,并且用官方的预编译库……不过一直没搞懂msvc是只带着个编译器呢,还是连winsdk和dxsdk都带上了呢…… 似乎默认安装VCExpress,只带windows sdk,没有dxsdk吧?msvc已占领了windows平台,bcc/icc/gcc越来越没地位了。 呆呆很呆 2012-12-23 09:58 那么多编译出来用不着 所以两条命令configure -no-openglmingw32-make module-qtbase就能编译出我需要的库来了(虽说PrintSupport库连接失败 但是这后边编译的我只需要platforms/windows cd进去qmake mingw32-make就OK了) XChinux 2012-12-23 11:28 以前也用mingw来着,可是在windows下搞开发,似乎免不了要用到一些第三方库,而那些库有许多是不提供mingw支持的,于是乎只能转到msvc了,我在当时主要是因为要用到ICE,而ICE对mingw支持不佳,才转到msvc的.我个人觉得,既然官方未出mingw编译包,那肯定是有些现在还未解决好的问题,所以还是等官方出mingw编译包吧。 roywillow 2012-12-23 13:38 引用第7楼XChinux于2012-12-23 11:28发表的 :以前也用mingw来着,可是在windows下搞开发,似乎免不了要用到一些第三方库,而那些库有许多是不提供mingw支持的,于是乎只能转到msvc了,我在当时主要是因为要用到ICE,而ICE对mingw支持不佳,才转到msvc的.我个人觉得,既然官方未出mingw编译包,那肯定是有些现在还未解决好的问题,所以还是等官方出mingw编译包吧。 总感觉msvc不绿色我偶尔会用同学的电脑来跑编译,速度快,但是要让我在别人的电脑上装msvc我坚决不干……mingw直接copy过去就能用,并且winsdk、dxsdk之类的库都齐全,msvc没这方便性吧 http://www.qtcn.org/bbs/simple/?t52162.html 相关文章: 2021-07-11 2022-12-23 2021-07-28 2022-12-23 2022-12-23 2021-08-04 2021-10-17