静态库的一个缺点是,当我们同时运行许多应用程序并且它们都使用同一个函数库的函数时,就会在内在中有同一函数的多份拷贝,在程序文件中自身也有多份同样的拷贝,这将消耗大量的宝贵的
内存和磁盘空间。
共享库的保存位置与静态库是一样的,但共享库有不同的文件名后缀。在典型的 linux 系统中,标准数学库的共享版本是 /usr/lib/libm.so.
当程序使用共享库时,它的链接方式是这样的: 它本身不再包含函数代码,而是引用运行时可以访问的共享代码。当编译好的程序被装载到内存中执行时,函数引用被解析并产生对共享库的调用。
如果有必要共享库才被加载到内存中。