编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。
一个现代编译器的主要工作流程:
源代码 (source code) →源代码就是人类可读的按程序设计语言编写的代码
预处理器 (preprocessor) → 编译开始之前由编译器调用的独立程序。预处理器可以删除注释、包含其他文件以及执行宏(宏macro是一段重复文字的简短描写)替代
编译器 (compiler) →将“高级语言”翻译为“机器语言(低级语言)”的程序
汇编程序 (assembler) → 把汇编语言书写的源程序,变为机器语言表示的目标程序。
目标代码 (object code) →指源代码经编译后,产生的能被 CPU直接识别的二进制代码。
链接器 (Linker) → 将由编译器或汇编器生成的目标文件外加库链接为一个可执行文件。
静态链接的最大缺点是生成的可执行文件太大,需要更多的系统资源,在装入内存时也会消耗更多的时间。静态链接对服务器的负载很小,但不能随时更新。
动态链接:把链接这个过程推迟到了运行时再进行,这就是动态链接(Dynamic Linking)的基本思想。
可执行程序 (executables)。这类文件可以“单独运行”,或者理解为“有生命”的文件!
脚本:不是所有的执行档,都只存有电脑能阅读的资料。以脚本语言撰写的脚本档案,都可以是执行档,而且内含的资料可被人类阅读,多数以ASCII文本存盘。原因是:脚本语言无需经过编译器预先编译,就可经过直译器(如Perl、Python、Shell)执行