C++的静态库和动态库

本文详细介绍了如何在Linux环境下创建和使用静态库与动态库,包括使用gcc/g++生成.o文件,通过ar工具打包静态库,以及生成动态库的步骤。同时,讨论了两者在使用时的选项如-I,-l,-L,以及动态库的加载和环境变量设置。文章还对比了静态库与动态库的优缺点,如静态库的便携性和资源消耗,动态库的共享与更新便利性。
摘要由CSDN通过智能技术生成

一、静态库的创建
1.通过gcc或者g++生成 .o 目标文件

g++ xxx.cpp -o xxx.o

2.通过ar(archive)对 .o 文件进行打包

ar rcs libxxx.a xxx.o xxx.o
-r 将文件插入备存文件中
-c 创建备存文件
-s 索引

二、静态库的使用

g++ main.cpp -o xxx -I xxx -l xxx -L xxx
-I 到指定目录下搜索头文件
-l 库文件名
-L 库文件搜索目录

三、动态库的创建

1.通过gcc或者g++生成与位置无关的 .o 目标文件

g++ xxx.cpp  -fpic/-fPIC -o xxx.o

2.制作动态库

g++ -shared xxx.o xxx.o -o libxxx.so

四、动态库的使用

同静态库,不过可能需要将修改环境变量LD_LIBRARY_PATH将动态库的位置加入,也可以通过sudo vim ld.so.conf将位置加入,然后使用sudo ldconfig进行对ld.so.catch文件的更新

环境变量的修改:

1.临时修改expert PATH = $PATH:xxx
2.用户级别修改:修改~/bashrc文件,使用source ~/bashrc进行更新
3.系统级别修改:修改/etc/profile文件,使用source /etc/profile进行更新

五、静态库与动态库的区别

1.静态库优点
①静态库在打包到应用程序中加载速度快
②发布程序无须提供静态库,移植方便

2.静态库缺点
①消耗系统资源,浪费空间(每个需要使用静态库的应用程序都需要将静态库加载进去)
②更新、部署、发布麻烦(当静态库更新时,需要重新编译链接)

3.动态库优点
①可以实现进程间资源共享(同一份动态库可以被应用程序共享使用)
②更新、部署、发布简单(当动态库更新时,只需要重新编译动态库即可)
③可以控制何时加载动态库(只有当应用程序需要时才会进行加载)

4.动态库缺点
①加载速度比静态库慢(因为是动态加载)
②发布程序时需要提供依赖的动态库(因为是动态加载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值