最近我也看了一下关于静态链接库操作的相关内容,这个比动态链接库相对来说要简单一些~
静态链接库其实已经把需要编译的函数内容写进lib文件里面了,所以只要有个lib那么就算主体实现函数的C文件不见了也没关系,只要有个lib(或者加上.h头文件)就可以了~
这样做的好处就是对于一些不怎么更新的代码块来说使用方便,编译速度相对于动态链接库来说会快一些~
但用静态链接库因为包含整个函数内容,所以所占的空间比较大,而且一个库如果只是需要其中一个,那要么全部要,要么全部不要
所以如果修改了某个lib实现文件的代码块,那么要重新对所有引用该代码块的lib都要进行编译,这样多少会影响编译效率~
当然,查过资料说早期的tcc甚至看过vc那些库函数都是用静态链接库实现的(因此vc找不到库函数实现的C文件,这个问题当时不怎么理解现在可以了),所以对于实现文件不常更新或者说不再更新这种情况用静态链接库还是比较好用的~
动态链接库就是链接库只包含该函数的地址信息而不包含主体内容,所以说对外依赖相对来说较强~
但它所占用的空间比较少,通常是用到某个函数就链接哪个具体函数,修改函数实现主体(删除该函数除外)不需要重新编译dll(就是动态链接库)
如果对于一些只实现部分功能要长期跟进,或者要长期测试维护的代码,而且被外部引用比较多的那用动态链接库比较方便管理
但如果删除了那个实现函数那dll文件,因为dll加载的地址入口还在,那样编译的时候难免会出问题,所以dll还是需要同步更新的~
其实链接库涉及到内容还有很多,就是自己组织一次顺便加深理解而简单说说而已
~
[此贴子已经被作者于2018-5-8 01:39编辑过]