一. 定义
1.1 动态库和静态库
- 动态库:在linux下是后缀为.so文件,在windows下是后缀为.dll文件。多个程序可以共享使用动态库代码。
- 静态库:在Linux下是后缀为.a的文件,在windows下是后缀为.lib的文件。
1.2 动态链接和静态链接
-
动态链接:在可执行程序运行前,操作系统将使用到动态库机器码从硬盘加载到内存中。
-
静态链接:可执行程序编译链接时,将代码使用到的静态库的代码拷贝到可执行程序中。
静态链接和动态链接的优缺点:
静态链接:可执行程序文件体积大,但是不依赖库,可移植性强。
动态链接:库执行程序文件体积小,但是依赖库,如果库被删除,该程序也就不可以使用了
二. 自己制作动静态库
2.1 制作静态库
1.1制作静态库
1.2使用静态库
2.2 制作动态库
2.1 制作动态库
2.2 使用静态库
三. 查看动态库或者静态库是32位的还是64位
#如何查看动态库或者静态库是32位的还是64位的
对于动态库.so文件,用file命令就可以查看是 ELF 64-bit LSB shared object。
但对于静态库.a文件,用file命令查看,只能显示 *.a: current ar archive
要想这个静态库 *.a文件是32位的,还是64位的,可以使用 objdump 命令
objdump -a xx.a
如果显示结果是:file format elf64-x86-64,则为64位的
相关链接: