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

  • 静态链接是在编译链接时直接将需要的执行代码拷贝到调用处;

    优点在于程序在发布时不需要依赖库,可以独立执行,缺点在于程序的体积会相对较大,而且如果静态库更新之后,所有可执行文件需要重新链接;

  • 动态链接是在编译时不直接拷贝执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定代码时,在共享执行内存中寻找已经加载的动态库可执行代码,实现运行时链接;

    优点在于多个程序可以共享同一个动态库,节省资源;

    缺点在于由于运行时加载,可能影响程序的前期执行性能。

发表评论

后才能评论

评论(1)

  • zjk 普通 2021-10-13 9:56 上午

    静态库,就是把库里的东西都编译到你的生成文件当中去,而动态库,则只把库里函数之类的入口点的相关信息编译进去,等到运行的时候再加载动态库调用库里面的东西。

    说白了,静态库就是先吃撑了,防止之后饿;动态库就是,把粮食带着,等饿了再吃。