C语言函数库:动态链接库与静态链接库

首先,函数库就是一些事先写好的函数的集合,是别人分享的,我们可以拿来使用的。经过一些校准和整理,就形成一份标准化的函数库。例如glibc

函数库有两种提供形式:动态链接库与静态链接库

早起函数库里的函数都是直接共享的,就是所谓的开源社区。后来函数库商业化,就出现了静态链接库与动态链接库。

他们是不直接给客户提供源代码,静态链接库是先将源代码只编译不连接形成.o文件,再用tar工具将.o文件归档成.a文件(即静态链接库文件),商业公司通过提供.a文件库和.h头文件给客户使用。客户在使用的时候,通过文件描述得知函数原型,在自己的.c文件中直接调用这些库文件,然后在连接器连接的时候去.a文件库里取出那个函数对应的.o文件,从而生成可执行程序。

动态链接库相比静态链接库效率更高,假设多个程序都使用了某个函数库,那么静态链接库在连接生成可执行程序的时候就要重复占有内存,而动态链接库则不需要库函数的代码段连接到可执行程序中,只是做个标记,等着运行过程中发现调用了一个动态库里的库函数,就会去加载这个动态库到内存中去,不会重复加载。

猜你喜欢

转载自blog.csdn.net/weixin_40597998/article/details/83821713