库:一种可执行代码的二进制形式,可以被载入内存执行,其中可分为静态库和动态库。
一· 静态库:
linux下一般为.a结束,由于静态库是要编译进程序中的,所以利用静态库编译成的执行文件比较大(相比动态库);
优点:
因为整个静态库的所有数据(代码)都会被整合进目标代码中,所有使用的函数也被编译进去了,所以编译后生成的可执行文件不需要任何外部库的支持;
缺点:
因为当库改变时,要重新编译整个工程。
二. 动态库
linux下动态库名字一般以.so结束,相比静态库,动态库是不被编译进目标代码的,只有你的程序执行到相关函数时才调用动态库里面的相关实现或者定义的函数;
由于不用编译进目标代码,所以编译生成的可执行文件较小。
优点:
动态库函数改变并不影响你的程序,所以动态库升级比较方便。
缺点:
由于库没有被编译进目标代码,而是程序执行时动态申请调用函数,所以程序的执行环境中必须提供相应的库。
未完待续
参考:
http://www.cnblogs.com/tianshuai11/archive/2012/03/20/2477180.html