使用动态链接库的主要原因是节省内存和提高可重用性。如果将所有库写进程序里,那么每个程序都会包含大量重复的代码,导致程序的体积变得庞大,不仅占用程序的加载和运行速度。而使用动态链接库,这些模块只需要加载一次,即可供多个程序共用,大大节省了内存和磁盘空间。此外,动态译程序的情况下更新和护性和可重用性
静态链接:
由链接器在链接时将库的内容直接加入到可执行程序中
编译静态库源码:gcc –c lib.c –o lib.o
②生成静态库文件:ar –q lib.a lib.o //将 lib.o 与其他文件打包到 lib.a 中
③使用静态库编译:gcc main.c lib.a –o main.out
动态链接:
可执行程序在运行时才动态加载库进行链接 ,库的内容不会进入可执行程序当中
①编译动态库源码:gcc –shared dlib.c –o dlib.so
②使用动态库编译:gcc main.c -ldl –o main.out
动态链接库和静态链接库的最大区别在于链接时机不同。静态链接是在形成可执行程序前,而动态链接则是在程序执行时进行⁴。静态链接库在链接时把库直接加载到程序中,而动态链接库只保留接口,将动态库与程序代码独立,这样可以提高代码的可复用度和降低程序的耦合度³