静态库与动态库的创建与使用 - Jackon Yang
- - 博客园_首页静态库:链接时,库与编译生成的 .o 文件一起打包到可执行文件中. linux / windows 下扩展名分别为:.a / .lib. 动态库:链接时,不会打包到可执行文件中, 执行时会动态的加载动态库. linux / windows 下扩展名分别为:.so / .dll. 合入动态库的更新,只要替换库即可.
1. 基本概念
区别主要体现在:
2. 静态库的创建与使用
静态库本质就是一组 .o 组成的压缩文件,扩展名为 .a / .lib
XXX 是库名,mmmm.o nnnn.o 是要打包的目标文件。crv 参数,含义分别是
使用时,只需在代码中引入 头文件,链接时,指定静态库的搜索路径(-L选项)和静态库名(不需要lib前缀和.a后缀,-l选项)。
3. 动态库
Window与Linux执行文件格式不同,在创建动态库的时候有一些差异。
linux 下动态库的命名格式同静态库,为 libXXX.so 格式。
动态库的创建,使用编译器即可,不需要像静态库一样使用专门的打包工具。
若要创建动态库,源码编译时添加 - fPIC 选项,链接时添加 -shared 选项。
用法同静态库,只是需要设置下搜索路径。默认搜索路径:/lib/,/usr/lib
设置搜索路径:
4. 相关工具
ldd 查看程序依赖的共享库(动态库)
gcc / g++ 参数 -I(大写 'i'),-L(大写'l'),-l(小写'L')
大写是目录,小写是库。
本文链接: 静态库与动态库的创建与使用,转载请注明。