你好,我是戴铭。
你是不是经常会好奇自己参与的这么些项目,为什么有的编译起来很快,有的却很慢;编译完成后,有的启动得很快,有的却很慢。其实,在理解了编译和启动时链接器所做的事儿之后,你就可以从根儿上找到这些问题的答案了。
所以,在今天这篇文章中,我就重点和你讲解一下链接器相关的知识。简单地说,链接器最主要的作用,就是将符号绑定到地址上。理解了这其中的原理后,你就可以有针对性地去调整和优化项目了。
同时,掌握了链接器的作用,也将有助于你理解后面文章中,关于符号表、加载相关的内容。
现在,我们就从 iOS 开发的起点,也就是编写代码和编译代码开始说起,看看链接器在这其中到底发挥了什么作用。
iOS 开发为什么使用的是编译器?
我们都知道,iOS 编写的代码是先使用编译器把代码编译成机器码,然后直接在 CPU 上执行机器码的。之所以不使用解释器来运行代码,是因为苹果公司希望 iPhone 的执行效率更高、运行速度能达到最快。
那为什么说用解释器运行代码的速度不够快呢?这是因为解释器会在运行时解释执行代码,获取一段代码后就会将其翻译成目标代码(就是字节码(Bytecode)),然后一句一句地执行目标代码。
也就是说,解释器,是在运行时才去解析代码,这样就比在运行之前通过编译器生成一份完整的机器码再去执行的效率要低。