C++ 动态库与静态库的区别?

一、生成方式

  1. 静态库生成
cpp 复制代码
g++ -c add.cc -o add.o
g++ -c del.cc -o del.o
ar rcs libapi.a del.o add.o
g++ -static main.cc -o static main -L./ -lapi -l./
./static main
  1. 动态库生成
cpp 复制代码
g++ -c add.cc -o add.o
g++ -c del.cc -o del.o
g++ -shared -fPIC -o libapi.so del.o add.o
g++ main.cc -o dynamic main -L./ -lapi -l./
export LD LIBRARY PATH=$LD LIBRARY PATH:/home/mark/interview/ccplus/lib
./dynamic main

二、链接方式

  1. 静态链接

    把静态库编译进目标文件

  2. 动态链接

    没有把库编译进目标文件

    程序运行时才去加载运行代码:地址无关代码技术 -fPIC;装载时重定位

    只做语法检查

三、空间占用

静态库会存在多个副本(内存和磁盘)

动态库只有一个副本

四、使用方式

静态库所在程序是直接运行

动态库所在程序是动态加载,注: 程序环境需要指定动态库查找路径 LD LIBRARY PATH

五、执行速度

静态库快、动态库慢

六、库文件发生变更

接口改变:都需要重新编译

接口实现改变:静态库都需要重新编译;动态库只需重新编译动态库


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs

相关推荐
LuckyTHP2 分钟前
迁移shibboleth java获取shibboleth用户信息
java·开发语言
墨韵流芳9 分钟前
CCF-CSP第41次认证第三题——进程通信
c++·人工智能·算法·机器学习·csp·ccf
客卿12310 分钟前
数论===质数统计(暴力法,)
java·开发语言
hz_zhangrl15 分钟前
CCF-GESP 等级考试 2026年3月认证C++五级真题解析
c++·青少年编程·程序设计·gesp·c++五级·gesp2026年3月·gesp c++五级
Σίσυφος190017 分钟前
C++ 多肽经典面试题
开发语言·c++·面试
csdn_aspnet1 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
qq_254674411 小时前
Docker 中的 镜像(
开发语言
码云社区2 小时前
JAVA二手车交易二手车市场系统源码支持微信小程序+微信公众号+H5+APP
java·开发语言·微信小程序·二手交易·闲置回收
crescent_悦2 小时前
C++:The Largest Generation
java·开发语言·c++
paeamecium2 小时前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试