动态库与静态库的区别
动态库和静态库都是代码的二进制的封装形式。
区别:
1、动态库
对于动态库来说,编译可执行文件时候,并没有把动态库的内容拷贝到可执行文件中,只是做了一个标记,表示可执行文件需要用到某某库。这样的话运行该可执行文件时,需要把所需要的动态库都下载到目标板,并且配置LD_LIBRARY_PATH。
2、静态库
对于静态库来说,编译可执行文件时,会把静态库中所有的内容编译到可执行文件中,运行时,直接运行。如果要在目标板上运行,就不需要把静态库下载到板子上。
动态库两个明显的优势:
(1)当接口变化的时候,更新动态库,不需要重新编译依赖该动态库的工程文件,如果是静态库,进行了修改,则需要重新编译依赖该静态库的所有的工程文件。
(2)运行时候,动态库在内存中只有一份拷贝,而静态库,则会有多个拷贝(看有多少个程序在使用它) “冗余”。