既然是静态编译,那就要编译出来的程序不信赖于任何dll文件。
首先下载qt-win-opensource-4.7.4-mingw.exe: http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-mingw.exe 和MinGW-gcc440_1.zip: http://get.qt.nokia.com/misc/MinGW-gcc440_1.zip

然后依次解压MinGW-gcc440_1.zip、安装qt-win-opensource-4.7.4-mingw.exe。记得要将gcc的目录和qt的目录添加到环境变量中。

然后打开DOS窗口并切换到Qt的目录(比如我的是D:\Qt\4.7.4),再设置两个变量
set QTDIR=D:\Qt\4.7.4
set QMAKESPEC=win32-g++

再编辑D:\Qt\4.7.4\mkspecs\win32-g++\qmake.conf文件(最好先备份),改两处:
QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
修改为
QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
再将
QMAKE_LFLAGS_DLL = -shared
修改为
QMAKE_LFLAGS_DLL = -static

再执行命令:
configure -platform win32-g++ -release -opensource -static -fast -qt-sql-sqlite -plugin-sql-sqlite -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -nomake examples -nomake docs -nomake demos

如果有提问是否遵守LGPL协议,选y。配置完成后,最后两句是这样的:
Qt is now configured for building. Just run mingw32-make.
To reconfigure, run mingw32-make confclean and configure.

cd src
mingw32-make -i -k

注意:我们只在在Qt子目录src里运行make。不要在整个qt库的大目录下运行make。只在src目录make,这样只编译核心的Qt库和一些插件,节省时间,而且有核心Qt库就够用了。
如果在D:\Qt\4.7.4\ 整个大目录下运行make,那么make还会去重新编译生成tools目录下的代码,重新做工具程序,像assistant.exe、designer.exe、linguist.exe、qmlviewer.exe等等(生成后全在bin目录)。这些工具使用静态库生成后巨大无比。这些工具程序不管是静态链接还是动态链接生成的,对我们编程压根没影响,都一样用。

好了,接下来就是漫长的等待。2个多小时左右就应该可以编译完成了。
此时再用Qt编译生成的可执行文件不用再信赖Qt的动态库了,但是文件比较大随便一个都是10M以上,而且如果使用的是从qt官网下载的MinGW-gcc编译生成的可执行文件还是会信赖mingwm10.dll动态库。这个只需换一个版本的编译器即可,我用的是这个: http://115.com/file/dn3fkn1g

如果嫌这个过程太麻烦可以直接下载我编译好的静态库来使用:
Qt4.7.4_Win32静态库.part1.rar: http://115.com/file/dn3zwayy
Qt4.7.4_Win32静态库.part2.rar: http://115.com/file/dn3zwa9g
这个是完整版的,解压下来有2G多。如果觉得太大了可以下载精简版:
Qt4.7.4_Win32静态库精简版.rar: http://115.com/file/bhy7bat6
精简版只保留了编译时需要的库文件和qmake等必要的工具,解压下来有500M左右。
注意:只有解压到D盘根目录下才能使用
编译器用的是mingw-7.2.exe: http://115.com/file/dn3fkn1g

http://www.xefan.com/archives/83668.html

Windows下静态编译Qt4的更多相关文章

  1. Windows下MinGW编译Qt4

    还真不是吹,这个问题折磨我一天……前些天转载了一篇关于<Eclipse+Qt开发环境设置>和<Eclipse+MinGW+Qt开发环境设置>两片文章,里面讲述了QT的开源版本q ...

  2. Qt5.5.0在Windows下静态编译(修改参数以后才能支持XP)good

    测试系统环境: windows 7 编译软件环境: vs2013 + QT5.5.0 [源码地址:http://download.qt.io/official_releases/qt/5.5/5.5. ...

  3. windows下静态编译pthread

    1. Building the library as a statically linkable library-------------------------------------------- ...

  4. WIN10系统下静态编译Qt4.8.7

    qt-everywhere-opensource-src-4.8.7.tar.gz  http://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere- ...

  5. 原创 C++应用程序在Windows下的编译、链接:第一部分 概述

    本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ...

  6. C++应用程序在Windows下的编译、链接(一)概述

    C++应用程序在Windows下的编译.链接(一)概述 本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 c ...

  7. Windows下静态库与动态库的创建与使用

    Windows下静态库与动态库的创建与使用 学习内容:本博客介绍了Windows下使用Visual C++ 6.0制作与使用静态库与动态库的方法. --------CONTENTS-------- 一 ...

  8. [转]QGis2.9在windows下的编译以及二次开发包下载

    今天心血来潮,将QGis在github上的代码更新后,又编译了一下.留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明.编译过程非常顺利,除了在CMake的第一次conf ...

  9. 用mingw静态编译Qt4.8.2和Qt5.1.1(需要修改不少源码)

    因为一些乱七八糟的原因,我需要用mingw静态编译Qt4.8.2和Qt5.1.1.经历了一天的折腾之后,自觉编译一下Qt还是件颇为麻烦的事情,故将过程略作总结,以备不时之需. 首先,在编译之前,我需要 ...

随机推荐

  1. php protected 类型如何获取

    感谢 https://blog.csdn.net/m0_38092942/article/details/81354184 比如对象如下 object(App\User)#265 (28) { [&q ...

  2. 可视化格式模型(visual formatting model)

    原文 简书原文:https://www.jianshu.com/p/7632f16ff555 大纲 1.认识可视化模型 2.可视化模型的内容 3.可视化模型的影响因素 1.认识可视化模型 盒子模型是C ...

  3. 13、虚拟驱动vivi.c注册过程分析及怎么写V4L2驱动及启动过程

    UVC设备也是一个usb设备,在uvc_driver.c中的init函数会调用usb_register注册,根据id_table发送可支持的设备后调用probe函数,其会去uvc_register_c ...

  4. MFC的CListCtrl的使用与技巧

    http://blog.csdn.net/artechtor/article/details/2508070 列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属 ...

  5. Web系统自动化部署脚本

    Web开发的项目,除了在本地直接运行外,还可能经常需要在服务器上部署. 写了个自动化部署的脚本,仅供参考. 不少地方需要配置路径,个人建议使用绝对路径,不用依赖执行脚本时所在的路径. #!/bin/s ...

  6. jsp页面无法解析EL表达式问题

    Servlet版本的问题.原来Servlet中可以设定是否解析EL表达式,只有2.4版本的Servlet默认是解析EL表达式的,而其他版本是默认不解析EL表达式.于是把web.xml中使用的2.5版本 ...

  7. jquery-8 jquery如何处理css样式

    jquery-8  jquery如何处理css样式 一.总结 一句话总结: 1.如何获取网页的三个高? 1)可视区域的高$(window).height(); 2)文档总高度$(document).h ...

  8. 洛谷 P1984 [SDOI2008]烧水问题

    洛谷 P1984 [SDOI2008]烧水问题 题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热. ...

  9. Android JNI编程(五)——C语言的静态内存分配、动态内存分配、动态创建数组

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:什么是静态内存什么又是动态内存呢? 静态内存:是指在程序开始运行时由编译 ...

  10. 【u008】瑞瑞的木棍

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 瑞瑞有一堆的玩具木棍,每根木棍的两端分别被染上了某种颜色,现在他突然有了一个想法,想要把这 些木棍连在 ...