请哪位来解释一下Qt静态编译和动态编译的区别

请哪位来解释一下Qt静态编译和动态编译的区别,第1张

静态编译与动态编译的区别:

1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。

所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。

缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。

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

1.将c:\qt\2010.05\qt\mkspecs\win32-g++\qmake.conf文件中的qmake_lflags

=

-enable-stdcall-fixup

-wl,-enable-auto-import

-wl,-enable-runtime-pseudo-reloc

改为

qmake_lflags

=

-static

-enable-stdcall-fixup

-wl,-enable-auto-import

-wl,-enable-runtime-pseudo-reloc

2.在开始菜单里找到qt

command

prompt并运行,输入命令:

configure

-static

-debug-and-release

-no-exceptions

-l

"c:\qt\2010.05\qt\include"

-l

"c:\qt\2010.05\qt\lib"

-l指定一下路径,防止用到vc的头文

1,如果同时打开静态库和运行程序调用,调式模式下,可以进入静态库的内部函数进行调试;

2,其实不用把shadow build取消勾选;文件输出的文件就是lib***.a的文件,可以在shadow目录里面很方便找到;

3,新的项目使用的时候,就是让其能找到lib***.a,和该库的h头文件;

4,QT的编译输出的静态库名字会自动在项目名字前加lib三个字,后缀是.a;

5, QT5.15的编程的工程与该例子中缺少“需要什么模块就添加什么”的部分;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12198743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存