
静态库与动态库
静态库与动态库的区别可以从以下几个角度来说明:
编译方式:静态库在编译时会被完整地链接到可执行文件中,而动态库在编译时只会被引用,最终需要在运行时动态加载。
文件大小:静态库会增加可执行文件的大小,因为静态库的代码被完整地复制到可执行文件中。而动态库的代码只需要被引用,所以可执行文件的大小相对较小。
内存占用:静态库在程序运行时会被完整地加载到内存中,而动态库在程序运行时需要被动态加载到内存中。因此,动态库在内存占用方面更加灵活,可以在需要时加载和释放。
可维护性:静态库的更新需要重新编译整个程序,而动态库的更新只需要替换动态库文件即可。因此,动态库在可维护性方面更加方便。
共享性:多个程序可以同时使用同一个动态库,从而节省了系统资源。而静态库每个程序都需要复制一份,增加了系统资源的消耗。
跨平台性:动态库通常具有更好的跨平台性,因为可以在不同的操作系统上使用同一个动态库文件。而静态库需要针对不同的操作系统进行编译。
总的来说,静态库在编译时被完整地链接到可执行文件中,占用内存较大,但可执行文件的独立性较强;而动态库在运行时动态加载,占用内存较小,但可执行文件的依赖性较强。选择使用哪种库取决于具体的需求和项目要求。
构建安装程序
Windows打包
在Windows平台上,当构建完Qt程序后,需要使用找到其依赖的动态库(*.dll)。常用工具有Dependency、Dependencies(win10、win11)。

使用Dependencies建议区分依赖分别是来自windows、qt、还是第三方库;
依赖库查找齐全后方可进行构建安装程序,下面是推荐的工具:
NSIS、Inno Setup、Advanced Installer等。
注意事项:验证确认自己安装包完整性,往往需要使用对应系统未安装Qt程序的虚拟机。
Linux打包
Linux下部署Qt应用程序,有如下几种方式:
创建本地分发包
Linux发行版较多主流包管理器有两个:rpm、deb.
rpm参考:https://tldp.org/HOWTO/RPM-HOWTO/
deb参考:https://www.debian.org/doc/manuals/maint-guide/
创建独立应用程序
要将Qt程序独立部署到Linux中,需要将其所需组件捆绑。推荐工具linuxdeployqt,它可以最终生成AppImage。
跨平台打包工具
Qt Installer Framework,简称 Qt IFW,来自Qt官方,现在可以进行通用程序打包。
结尾
其它工具不太了解,接下来我会针对Qt Installer Framework写一篇程序打包和在线升级的教程,敬请期待!