- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows下Qt静态编译连接和生成程序的
mingwm10.dll、 libgcc_s_dw2-1.dll依赖问题解决
本文编写和程序配置调试: HYPERLINK mailto:蔚蓝(winland0704@126.com 蔚蓝 (winland0704@126.com )
HYPERLINK /winland0704/home /winland0704/home
一、官方Qt 库-MinGW版本(Qt Creator)静态编译和DLL依赖解决
1、MinGW版本
(1)MinGW官方版本(gcc-4.5.2)
使用dwarf2异常处理,默认使用动态C运行时库,默认生成的程序依赖:
libgcc_s_dw2-1.dll(105K)
libstdc++-6.dll(860K)
使用参数 -static 可以解除对以上dll依赖。
现在新版MinGW生成的程序默认已经不依赖mingwm10.dll了。
TDM-GCC版本(Codelite和CodeBlocks带的,gcc-4.4.1)
使用sjlj异常处理,默认使用静态C运行时库,默认生成的程序独立运行,无dll依赖问题。
MinGW Distro - 必威体育精装版版本(gcc 4.6.0)
使用dwarf2异常处理,默认使用静态C运行时库,无DLL依赖问题。
QP-GCC版本(gcc-4.4.5)
使用dwarf2异常处理,默认使用静态C运行时库,无DLL依赖问题。
PCX版本,包括32bit和64bit版本的MinGW(必威体育精装版有gcc 4.6测试版)
与(4)差不多,无DLL依赖问题。
Qt库自带的MinGW(gcc-4.4.0)
GCC配置信息:
D:\Qt\2011qtgcc -v
Using built-in specs.
Target: mingw32
Configured with: ../gcc-4.4.0/configure
--enable-languages=c,ada,c++,fortran,java,objc,obj-c++
--disable-sjlj-exceptions --enable-shared --enable-libgcj --enable-libgomp
--with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug
--enable-version-specific-runtime-libs --prefix=/mingw --with-gmp=/mingw/src/gmp/root
--with-mpfr=/mingw/src/mpfr/root --build=mingw32
Thread model: win32
gcc version 4.4.0 (GCC)
Qt带的这个MinGW比较老,gcc-4.4.0版,
使用dwarf2异常处理,默认使用动态C运行时库。编写helloworld控制台程序,main.cpp
#include iostream
#include cstdio
#include cstdlib
using namespace std;
int main(int argc, char **argv)
{
printf(Hello World!\n);
coutHello World!\n ;
system(PAUSE);
return 0;
}
①编译命令:g++ -o hello.exe main.cpp -mthreads
依赖DLL:
mingwm10.dll (12KB)
libgcc_s_dw2-1.dll(42KB)
生成的hello.exe有3.59MB。很大,莫名其妙。
②编译命令:g++ -o hello.exe main.cpp
依赖DLL:
libgcc_s_dw2-1.dll(42KB)
生成的hello.exe有3.58MB。
③编译命令:g++ -o hello.exe main.cpp -static
依赖DLL:无。
生成的hello.exe有3.67MB。
④编译命令:g++ -o hello.exe main.cpp -mthreads -static
依赖DLL:
mingwm10.dll (12KB)
生成的hello.exe有3.68MB。
最后一个命令我们看到一个有意思的现象,Qt带的这个MinGW的gcc-4.4.0里压根没有mingwm10.dll对应的静态库版本,所以存在-mthreads参数时,不管怎么用-static参数,它总是需要动态库mingwm10.dll,这就是官方Qt让人纠结的地方。
只要使用它自带的MinGW,在-mthreads参数启用时,
文档评论(0)