编译(Compile):
什么是编译?
在编译器中能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式的过程称为编译
编译是针对一个源文件的,有多少个源文件就需要编译多少次,就会生成多少个目标文件
链接(Link):
什么是链接?
将所有二进制形式的目标文件和系统组件组合成一个可执行文件,就是一个“打包”的过程,将所有的目标文件以及系统组件组合成一个可执行文件
源文件(源程序)、目标文件(目标程序)、可执行文件(可执行程序)
什么是源文件(源程序)?
源文件一般指用汇编语言或高级语言写出来的代码保存为文件后的结果,源文件是相对目标文件和可执行文件而言的。
通常由终端或输入设备输入的源程序和数据所形成的文件都属于源文件。
源文件其实就是纯文本文件,它的内部并没有特殊格式,能证明这一结论的典型例子是:在 Windows 下用记事本程序新建一个文本文档,并命名为demo.txt
,输入一段C语言代码并保存,然后将该文件强制重命名为demo.c
(后缀从.txt
变成了.c
),发现编译器依然能够正确识别其中的C语言代码,并顺利生成可执行文件。
源文件的后缀仅仅是为了表明该文件中保存的是某种语言的代码(例如.c
文件中保存的是C语言代码),这样程序员更加容易区分,编译器也更加容易识别,它并不会导致该文件的内部格式发生改变。
每种编程语言的源文件都有特定的后缀,以方便被编译器识别,被程序员理解。源文件后缀大都根据编程语言本身的名字来命名,例如:
- C语言源文件的后缀是
.c
; - C++语言(C Plus Plus)源文件的后缀是
.cpp
; - Java源文件的后缀是
.java
; - Python源文件的后缀是
.py
; - JavaScript源文件后置是
.js
什么是目标文件(目标程序)?
目标文件(目标程序)指把源程序经过相应语言的编译程序编译过,但尚未经过链接程序链接的目标代码所构成的二进制文件(进行编译后的文件)。通常,目标文件所使用的后缀名是“.obj”。
什么是可执行文件(可执行程序)?
可执行文件(可执行程序)是指把编译后所产生的目标代码再经过链接程序链接后所形成的二进制文件
是指我们平时所说的程序,双击后就可以直接运行的程序,这样的程序被称为可执行程序(Executable Program)
例如:
在 Windows 下,可执行程序的后缀有.exe
和.com
(其中.exe
比较常见);在类 UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。
可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式的,CPU 可以直接识别,毫无障碍。
注:编译程序是将整个源文件(源程序)编译生成目标文件(目标程序)
引用:C语言编译和链接详解(通俗易懂,深入本质) (biancheng.net)