• 8409阅读
  • 7回复

qt 静态编译的文件好大,郁闷中。。。请专家指点 [复制链接]

上一主题 下一主题
离线henglzn
 
只看楼主 倒序阅读 楼主  发表于: 2010-12-28
花了好几个小时,把qt重新编译,成静态编译

用qt重新编译程序,原来1M多一点的程序,变成了150M,好夸张啊,估计把相关的dll都弄进去了。

如果不用静态编译,采用动态编译,就必须把相关的dll一起移动到别的电脑,相关的dll一起居然将近200M。
主要有如下几个dll:
QtGuid4.dll                                  160M+
QtCored4.dll                                38M+
.................................


我是一个新手啊,我就纳闷了,这我要把自己写的一个小小的程序给别人,难道非得带上这么巨大的这些dll文件。甚至是要求用程序的人自己装一个qt ??
昏了,这和java就没什么区别了,要运行java程序,要求别人装jdk。

请专家解惑,有什么好的解决办法,只要给别人一个小小的程序??
离线aesoplord

只看该作者 1楼 发表于: 2010-12-28
朋友,你发布的时候用release版本应该就行了吧。
离线henglzn
只看该作者 2楼 发表于: 2010-12-28
我用的就是release版本,

我用的开发环境是Eclipse+MinGW+QT
离线dbzhang800

只看该作者 3楼 发表于: 2010-12-29
引用第2楼henglzn于2010-12-28 22:16发表的  :
我用的就是release版本,
我用的开发环境是Eclipse+MinGW+QT

但是你前面给出的分明是 debug 版的
离线henglzn
只看该作者 4楼 发表于: 2010-12-29
——————————————————————————————————————————————————————————————

Qt默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,可以用这个命令编译静态库:

  在开始菜单里找到Qt Command Prompt并运行,输入命令: configure -static -debug-and-release -no-exceptions

  上一条命令运行成功后再输入命令: mingw32-make sub-src

  等1 ~3 小时可能就运行完了 完成后就ok了。。。

  当然你能编译成功的前提是你的一些路径配置都弄好了,还有许多人都只编译了release即发行版本的静态库,没有编译debug(调试版本)的静态库,于是你用Qt Creator的时候,如果debug选择调试模式的话,那么此时就会出现: collect2: ld returned 1 exit status 以及can't find lQtGuid4 这样的错误提示,解决办法就是输入命令:configure -static debug,然后在mingw32-make sub-src,可能要编译两到三个小时,如果你不加sub-src编译的时间还要长,10个多小时吧,直接make的结果是包括qt程序在内全部编译,当然花的时间要长很多。

——————————————————————————————————————————————————————————

我是根据如上的方法进行所谓的静态编译设置。

configure -static -debug-and-release -no-exceptions
mingw32-make sub-src
configure -static debug
mingw32-make sub-src

一共执行了如上4句,请问这样之后,在Eclipse中编译程序用release,是真正意义上的release版本么??我就这样编译release,出来也是 150M 左右。

请教3楼,怎么做才是真正的release版本,能使程序很小 ??

离线x_wp

只看该作者 5楼 发表于: 2010-12-30
只用第1、2句编译就行了。第1句已经设置了编译 debug和release库,第3句又设置只编译debug库,重复了。
离线liumu1209
只看该作者 6楼 发表于: 2010-12-31
请问楼上的,为啥我输入configure -static -debug-and-release -no-exceptions 这句就问我选择什么版本?我选择开源版后,又提示我要选择什么协议,之后就是编译一下问一下我选择什么协议,它就不会在一旁静静的编译吗?
离线henglzn
只看该作者 7楼 发表于: 2010-12-31
我还看是不要静态编译算了,把相关的dll一起考过去,总共10M多一点
快速回复
限100 字节
 
上一个 下一个