含义:
1.静态函数库
这类库的名字一般是libxxx.a.
利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中.
优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了.
当然这也会成为缺点,如果静态函数库改变了,那么你的程序必须重新编译.
比如PHP的configure参数–enable-mbstring=static(默认),
生成的mbstring.a被静态链接到二进制程序php,php-fpm,php-cgi,libphp.so中.
2.共享函数库
这类库的名字一般是libxxx.so.
相对于静态函数库,共享函数库在编译的时候 并没有被编译进目标代码中.
当程序执行到相关函数时才调用共享函数库里相应的函数,因此共享函数库所产生的可执行文件比较小.
由于共享函数库没有被整合进你的程序,而是在程序运行时动态地申请并调用,所以程序的运行环境中必须提供相应的库.
共享函数库的改变并不影响你的程序,所以共享函数库的升级比较方便.
比如PHP的configure参数–enable-mbstring=shared,生成的mbstring.so就是共享库.
另外用phpize生成PECL扩展库的configure文件,然后make编译,生成的也是共享库.