2. 静态链接和动态链接有什么区别?

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