一、静态库的创建
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.动态库缺点
①加载速度比静态库慢(因为是动态加载)
②发布程序时需要提供依赖的动态库(因为是动态加载)