linux中动态链接和静态链接的区别有哪些
这篇文章主要介绍“linux中动态链接和静态链接的区别有哪些”,在日常操作中,相信很多人在linux中动态链接和静态链接的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中动态链接和静态链接的区别有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
我们提供的服务有:成都网站制作、成都网站建设、微信公众号开发、网站优化、网站认证、普宁ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的普宁网站制作公司
区别:1、静态链接的进行是在形成可执行程序前,而动态链接的进行则是在程序执行时;2、静态链接库的代码装载速度快,执行速度略比动态链接库快;3、和动态链接相比,静态链接生成的可执行文件体积较大。
本教程操作环境:linux5.9.8系统、Dell G3电脑。
linux中动态链接和静态链接
编译链接的过程
编译分为3步,首先对源文件进行预处理,这个过程主要是处理一些#号定义的命令或语句(如宏、#include、预编译指令#ifdef等),生成*.i文件;然后进行编译,这个过程主要是进行词法分析、语法分析和语义分析等,生成*.s的汇编文件;最后进行汇编,这个过程比较简单,就是将对应的汇编指令翻译成机器指令,生成可重定位的二进制目标文件。
链接的两种方式
静态链接
动态链接
静态链接和动态链接两者最大的区别就在于链接的时机不一样,静态链接的进行是在形成可执行程序前,而动态链接的进行则是在程序执行时。
静态链接库的优点
a):代码装载速度快,执行速度略比动态链接库快;
b):只需要保证在开发这段计算机中有正确的.lib文件,再以二进制形式发布程序时不需要考虑用户的计算机上的.lib文件是否存在版本问题,可以避免DLL地狱等问题。
动态链接库的优点
a) 更加节省内存并减少页面交换;
b) DLL文件与EXE文件独立,只要输出接口不变__即名称、参数、返回值类型和调用约定不变__,更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;
c)不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;
d)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。
不足之处
a)使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;
b)使用动态链接库的应用程序不是自完备的,它依赖的DLL模块也要存在,如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。
到此,关于“linux中动态链接和静态链接的区别有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
分享文章:linux中动态链接和静态链接的区别有哪些
转载源于:http://ybzwz.com/article/gpieoi.html