• 8325阅读
  • 3回复

[提问]关于QT静态release编译出的版本的尺寸的问题 [复制链接]

上一主题 下一主题
离线米尔利安
 

只看楼主 倒序阅读 楼主  发表于: 2011-05-27
如题。
目标:编译不依赖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版呢?
我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
离线dbzhang800

只看该作者 1楼 发表于: 2011-05-27
1. 没看懂你修改链接参数的目的是什么
2. 没看懂你QtGuid.lib说300多M的目的是什么,为什么不说QtGui.lib 多大呢?

http://hi.baidu.com/cyclone/blog/item/25b262d9337a172310df9b78.html
[ 此帖被dbzhang800在2011-05-27 18:13重新编辑 ]
离线米尔利安

只看该作者 2楼 发表于: 2011-05-27
1、那个修改参数是抄别人的。
http://blog.csdn.net/mike_digilink/archive/2010/12/11/6069587.aspx
2、我没看懂您的意思,我说的就是QtGuid.lib的size啊。。。再说我指定了release,为什么还会生成一个debug库呢?
[ 此帖被米尔利安在2011-05-27 17:44重新编辑 ]
我们在天上的父,愿人都尊你的名为圣。
愿你的国降临。
愿你的旨意行在地上,如同行在天上。
离线dbzhang800

只看该作者 3楼 发表于: 2011-05-27
引用第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文件

快速回复
限100 字节
 
上一个 下一个