当前位置: 首页 > news >正文

Qt Windows下编译动态库生成的.a文件是什么?

Qt Windows下编译生成的.a文件是什么?

  • 引言
  • 一、Windows下的.a文件
  • 二、其它知识点

引言

众所周知,Linux下的静态库是扩展名为.a的文件,动态库是扩展名为.so的文件。Windows下的静态库是扩展名为.lib的文件,动态库是扩展名为.dll的文件,Windows编译动态库时,也会生成.lib文件,其作为导入库参与编译阶段。而Linux下没有导入库,.so文件参与程序的编译链接阶段及程序的运行阶段。那么,在Windows下编译动态库生成的.a文件是什么?

一、Windows下的.a文件

    1. 使用Qt,当看到Windows下编译动态库有.a文件生成,瞬间懵了 (这不是Linux下的静态链接库嘛!)。
    1. 查了qmake,特意Config -= staticlib,也会生成.a文件。后来查看Makefile LIB += 后面的一串字符:有.a文件 也有-l开头没有扩展名的库文件。
    1. 然后手动改Makefile,LIB += 那块从xx.a改成 -lxx(对应库的名称),也能编译成功。

那么.a文件到底是什么?网上一查,都说是Linux下的静态库,emm 说得对,但不全面!因为Windows下也有.a的静态库,以下是结论:

  • 当使用MinGW编译器编译动态库,会生成扩展名为.a文件的导入库(类比MSVC的编译器生成的.lib),只参与编译链接过程。
  • .a文件并不是必须的,只有dll也能编译链接(仅限MinGW编译动态库的时候哦)。给我的感觉只是增加编译速度,.a文件很小,动态库dll文件较大

推荐阅读:IDE/mingw下动态库(.dll和.a文件)的生成和部署使用(对比MSVC下.dll和.lib):https://blog.csdn.net/quguanxin/article/details/131841919

二、其它知识点

    1. Windows或者Linux下 静态库和动态库的文件扩展名,不是取决于系统,而是取决于编译器!
    1. 库文件的优势:
      1)提供功能又不暴露源码
      2)模块形式的解耦,无需重复编译,也方便管理
    1. 静态链接库与动态链接库对比:
  • 静态链接库优点:无需外部文件,部署简单,性能较好。 缺点:程序体积大,有冗余,更新时需编译整个程序。
  • 动态链接库优点:多程序共享库,节省资源,解耦,有更新时替换相应库文件即可。 缺点:部署需确保库文件配置正确,加载库会有轻微性能开销。

深入浅出链接库 | 静态库与动态库:https://cloud.tencent.com/developer/article/2442977
共享库的创建gcc选项“-shared -fPIC -WI”:https://blog.csdn.net/xuxu_123_/article/details/136771103
关于windows平台下CMake生成库中出现的.a文件:https://blog.csdn.net/m0_64240990/article/details/139304240

http://www.lryc.cn/news/577012.html

相关文章:

  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • Function Calling与MCP的区别
  • Ubuntu开放mysql 3306端口
  • X-Search:Spring AI实现的AI智能搜索
  • SpringMVC实战:从配置到JSON处理全解析
  • AlphaFold3安装报错
  • SpringCloud系列(40)--SpringCloud Gateway的Filter的简介及使用
  • cron 表达式 0 10 0/2 * * ? 的含义
  • Linux基本命令篇 —— head命令
  • 5 c++核心——文件操作
  • Origin绘制复合子母饼状图—复合柱饼图、复合环饼图及复合饼图
  • [Linux] PXE
  • es6特性-第一部分
  • Tomcat 安装使用教程
  • mybatis-plus从入门到入土(一):快速开始
  • 云端可视化耦合电磁场:麦克斯韦方程组的应用-AI云计算数值分析和代码验证
  • Spring Cloud:服务监控与追踪的高级实践
  • 为什么要安装create-vue@3.17.0
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 20(题目+回答)
  • 通过交互式可视化探索波动方程-AI云计算数值分析和代码验证
  • redisson看门狗实现原理
  • ai数据分析黄金
  • RuoYi-Vue学习环境搭建
  • Vue 与react 生命周期对比
  • WSL连不上网解决方案(包含WSL虚拟交换机不正常以及WSL网络配置不正常两种解决方案)
  • wpf的Binding之UpdateSourceTrigger
  • 【惯性导航知识杂记7】舒拉 (休拉、舒勒)周期、傅科周期、地球周期
  • Boss:技能选取——随机概率
  • 【51单片机按下按键1,8位共阴极数码管输出2022-606。按下按键2,8位共阴极数码管输出606-1132。】2022-6-10
  • 现代C++ 文件系统库