Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97950
  • 博文数量: 40
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-11 19:32
文章分类
文章存档

2014年(2)

2013年(29)

2012年(9)

我的朋友

分类: WINDOWS

2013-01-21 21:49:59

原文地址:VS2010纯静态编译QT4.8.2 作者:kjqin

    QT默认是动态编译,正常运行需要调用QT的标准库(即.dll),因此要想脱离IDE单独运行,必须满足:将关联的dll拷贝至.exe同目录(或system32文件夹内),或者在环境变量中添加QT标准库的路径。否则就会出现找不到动态库的警告。这就使得QT的通用性受到了局限,尤其是用QT开发上位机时,如果需要在某台电脑上观测数据,除了exe,还得拷贝一大堆dll过去,显得很麻烦。若想仅需要一个exe文件,就可以在所有装有win系统下的电脑上运行就需要将QT的标准库进行静态编译。
 
    首先到QT主页下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.2.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的。只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大。
 
    编译之前需要做的工作如下:
   1、删除源码包中bin目录下的syncqtsyncqt.dat文件,如你不放心可将其改名或剪切到别的位置。如不修改将发生 Perl not found in environment - cannot run syncqt 错误。

   2、修改\\mkspecs\\win32-msvc2010下的qmake.conf文件,将其中的QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t- 修改为QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t   (注意末尾的”-“号区别)。如不修改将来如有项目使用wchar_tqt却编译成wchar_t-,编译会导致连接错误,提示找不到Qwstring搜索整个文件,将MD,MDd对应改成MT,MTd,以实现在没有VC库的电脑也能运行Qt程序。

   3、修改src\\3rdparty\\webkit\\Source\\WebCore\\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行return WEB_UI_STRING("Look Up """, "Look Up context menu item with selected word").replace("", truncatedStringForLookupMenuItem(selectedString));替换成return WEB_UI_STRING("Look Up \\"\\"", "Look Up context menu item with selected word").replace("", truncatedStringForLookupMenuItem(selectedString));如不修改将出现编译Webkit 时会出现 U1077错误。

    编译过程:

    依次打开:开始->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),然后输入命令进入到源码包的目录下,执行配置命令:

configure -debug-and-release -fast -static -platform win32-msvc2010 -no-qt3support -script -scripttools -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -nomake demos -nomake examples -nomake docs -mp

   本文是将debug和release版本都编译,网上许多教程是只编译release版本,调试的时候动态链接发布静态链接。命令最后的-nomake demos -nomake examples -nomake docs,不编译demos,exampls,docs文件,这样既可以提高编译速度,也能减小编译后的体积。-mp适合多核用户提高编译速度,-fast也可以提高编译速度。

   执行配置,期间会询问是否采用open source(开源版本),还是商业版本,输入”o”选择开源版本;询问是否同意条款,输入”y”表示同意,开始执行配置过程,直到提示配置完成,可以下一步nmake,以开始执行编译。

   根据网上的建议, 编译结束之后没有执行 nmake clean,nmake confclean清理工作的步骤,据说如果执行会造成后面VS2010编译Qt程序以及QtSDK编译程序出现各种问题,如找不到config.h,qtmaind.lib等等。  同样没有在configure添加-prex 指定nmake install安装目录,如果指定会VS2010编译程序时,出现很多找不到PDB的警告。

 
阅读(939) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~