静态链接
是在编译链接时直接将需要的执行代码拷贝到调用处;
优点在于程序在发布时不需要依赖库,可以独立执行。
缺点在于程序的体积会相对较大,而且如果静态库更新之后,所有可执行文件需要重新链接;
动态链接
是在编译时不直接拷贝执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定代码时,在共享执行内存中寻找已经加载的动态库可执行代码,实现运行时链接;
优点在于多个程序可以共享同一个动态库,节省资源;
缺点在于由于运行时加载,可能影响程序的前期执行性能。