静态链接和动态链接有什么区别?
- 静态链接是在编译链接时直接将需要的执行代码拷贝到调用处;
优点在于程序在发布时不需要依赖库,可以独立执行,缺点在于程序的体积会相对较大,而且如果静态库更新之后,所有可执行文件需要重新链接;
-
动态链接是在编译时不直接拷贝执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定代码时,在共享执行内存中寻找已经加载的动态库可执行代码,实现运行时链接;
优点在于多个程序可以共享同一个动态库,节省资源;
缺点在于由于运行时加载,可能影响程序的前期执行性能。
评论(1)
静态库,就是把库里的东西都编译到你的生成文件当中去,而动态库,则只把库里函数之类的入口点的相关信息编译进去,等到运行的时候再加载动态库调用库里面的东西。
说白了,静态库就是先吃撑了,防止之后饿;动态库就是,把粮食带着,等饿了再吃。