标题:关于QT静态release编译出的版本的尺寸的问题
作者:米尔利安
日期:2011-05-27 16:35
内容:
如题。
目标:编译不依赖C、C++运行时库的静态QT版本,便于程序的发布。
环境:Win2003+VS2008+qt4.6.3-everywhere源码
配置过程:
1、解压缩qt-everywhere到指定目录
2、修改mkspecs中相应的环境,将qmake.conf中的相应标签修改为:
QMAKE_CFLAGS_RELEASE = -O2 -MT -GL
QMAKE_CFLAGS_DEBUG = -Zi -MTd
同时修改QMAKE_LFLAGS_RELEASE和QMAKE_LFLAGS_DEBUG参数为:
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /LTCG /NODEFAULTLIB:libc.lib /NODEFAULTLIB:msvcrt.lib/NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib
QMAKE_LFLAGS_DEBUG = /DEBUG /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:msvcrtd.lib
3、运行
configure -static -release
完成后 nmake sub-src
但是在编译过程中发现编出来的lib文件很大(如QtGuid.lib竟有300多M)。。。。。。怎样才能真正编译出不依赖运行时库的release版呢?
#1 [dbzhang800 05-27 17:26]
1. 没看懂你修改链接参数的目的是什么
2. 没看懂你QtGuid.lib说300多M的目的是什么,为什么不说QtGui.lib 多大呢?
http://hi.baidu.com/cyclone/blog/item/25b262d9337a172310df9b78.html
#2 [米尔利安 05-27 17:38]
1、那个修改参数是抄别人的。
http://blog.csdn.net/mike_digilink/archive/2010/12/11/6069587.aspx
2、我没看懂您的意思,我说的就是QtGuid.lib的size啊。。。再说我指定了release,为什么还会生成一个debug库呢?
#3 [dbzhang800 05-27 18:56]
引用第2楼米尔利安于2011-05-27 17:38发表的:
1、那个修改参数是抄别人的。
http://blog.csdn.net/mike_digilink/archive/2010/12/11/6069587.aspx
2、我没看懂您的意思,我说的就是QtGuid.lib的size啊。。。再说我指定了release,为什么还会生成一个debug库呢?
链接器的参数我不太了解,link /? 基本没给出任何信息
至于configure的 -release,我们通过 configure --help 可以看到这段说明:
Configure options:
The defaults (*) are usually acceptable. A plus (+) denotes a default value
that needs to be evaluated. If the evaluation succeeds, the feature is
included. Here is a short explanation of each option:
-release ........... Compile and link Qt with debugging turned off.
*-debug ............. Compile and link Qt with debugging turned on.
+-debug-and-release . Compile and link two Qt libraries, with and without
debugging turned on.
如何理解这段话,我也不清楚。既然你刚刚编译过,不妨尝试看看Makefile文件