动态链接库.dll、.so和静态库.a,cmake指令

语言执行流程

预处理》编译》汇编》链接
源码》汇编语言》obj目标二进制文件》链接所有依赖后的可执行文件.exe

动态库和静态库

在这里插入图片描述

静态链接库(.a),一个是动态链接库(.so)

静态函数库
这类库的名字一般是libxxx.a

动态函数库
动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL)。Windows 中,DLL 多数情况下是带有 “.dll” 扩展名的文件,但也可能是 ".ocx"或其他扩展名;Linux系统中常常是 “.so” 的文件。
这类库的名字一般是libxxx.so

区别
相同点:链接库本身不是最终的执行程序文件,而是为其他执行文件提供服务的程序。如果把最终的执行程序文件比作一个汽车生产厂家,那么链接库就可以理解为零部件提供商 。

不同点:静态链接库在链接阶段就直接打包到最终的执行程序文件中,而动态链接库则是在程序运行时去链接库里面找需要的东西。

优缺点:显然,静态链接的库文件会导致最终目标程序文件体积膨胀,优点是编译之后就不受原来静态库文件的影响,即使原来的静态库被删除了都没关系;

而动态链接库可以保证文件体积较小,在升级程序时很方便,但缺点是库文件和主程序分开,如果库文件不存在(删除、移动或重命名等)了,则主程序文件找不到而出现运行时错误。

动态库、静态库生成

参考:https://blog.csdn.net/weixin_47826078/article/details/120474883

cmake指令介绍

案例参考:https://blog.csdn.net/a15608445683/article/details/122955835

官方文档:https://cmake.org/documentation/

参数指令参考:https://blog.csdn.net/weixin_41252852/article/details/119523019

猜你喜欢

转载自blog.csdn.net/qq_15821487/article/details/126137664
今日推荐