1 背景
原来跑的好好的进程,重启后没跑多少就挂掉了,奇怪了。经过跟踪,原来是加载了一个.so文件,于是决定学习一下library相关的东东,现在和大家分享一下。
2 分类
C/C++ library可分为三类:静态库(Static Libraries)、共享库(shared Libraries)和动态加载库(dynamically loaded DL libraries)。
静态库在程序编译时会被连接到可执行程序中,程序运行时将不再需要该静态库。
共享库在程序编译时并不会被连接到可执行程序中,而是在可执行程序启动时被载入内存的,因此在程序运行时还需要动态库存在。
动态加载库在可执行程序执行的任何时候可以被加载。 DL libraries aren't really a different kind of library format (both static and shared libraries can be used as DL libraries)。
3 Static Libraries
创建方法:
ar rcs libmy_library.a file1.o file2.o |
4 Shared Libraries
4.1 命名
soname: version number,由ldconfig -n $library_directory生成,程序加载依赖的名字,
library安装好之后,根据realname生成soname
realname: sona