C代码编译生成可执行程序会经过如下过程:
链接就是把目标文件与一些库文件生成可执行文件的一个过程。
1、什么是静态链接?
静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。
链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。
这里的库指的是静态链接库,Windows下以.lib为后缀,Linux下以.a为后缀。
2、什么是动态链接?
动态链接(Dynamic Linking),把链接这个过程推迟到了运行时再进行,在可执行文件装载时或运行时,由操作系统的装载程序加载库。
这里的库指的是动态链接库,Windows下以.dll为后缀,Linux下以.so为后缀。
值得一提的是,在Windows下的动态链接也可以用到.lib为后缀的文件,但这里的.lib文件叫做导入库,是由.dll文件生成的。
3、静态链接与动态链接的优缺点?
(1)静态链接的优缺点:
优点:
缺点:
(2)动态链接的优缺点:
优点:
缺点: