以下以Windows为例,概括静态库和动态库区别,以及使用场景。ubuntu上类似。
1、静态链接库:
静态链接库工程编译后,生成.lib文件。 在目的程序使用静态链接库的场合,直接将.lib文件中的全部函数链接到目的程序中。
运行生成的目的程序的场合,不再需要.lib文件就可以直接运行。
当静态链接库发生变化的场合,目的程序必须要重新编译,否则执行时静态链接库的内容没有更新。
2、动态链接库:
动态链接库工程编译后,生成.lib和.dll文件。 .dll文件是作为共享函数库的可执行文件。
不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数库。
适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。
DLL文件的内容发生变化时,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件就好,EXE文件不用再次编译也可以在执行时更新调用DLL函数的内容。极大地提高了可维护性和可扩展性。
运行程序时,必须保证.dll是存在的,否则会出错。
3、什么场合下适用静态链接库:
因为静态链接库会使得.exe文件的size变大,并且相对于动态链接库运行速度更快。故静态链接库适用于小型应用的开发。
4、什么场合下适用动态链接库:
因为静态链接库不能链接其它链接库,无论静态接库或者动态链接库。所吸,当该当链接库还需要链接其它的链接库,包括静态或者动态链接库的场合,应该使用动态链接库。
因为动态链接库.dll可以独立于.exe而存在,当开发大型软件的场合,或者说多个应用程序需要链接到该.dll时,.dll的逻辑需要修正的场合,其应用程序不需要再次编译。减少软件的耦合。
由于动态链接库.dll可以链接到不同编程语言的工程,所以对于多语言的软件开发的场合也是适用的。
参考链接静态链接库和动态链接库的使用场景
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!