源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令。可以比作自己手写的程序代码。
可执行程序(Executable Program,EXE file)是可以在操作系统存储空间中浮动定位的二进制可执行程序。一般软件安装后会生成可执行文件,可以直接加载到内存中,并又操作系统加载并执行。
以 C 语言为例,自己编写的源代码文件扩展名为 c,这个 c 文件就是源文件。从源文件到可执行文件一般需要经过几个步骤:预处理->编译->汇编->链接这四个过程。
- 预处理:预处理相当于根据预处理命令将源代码转换为新的 c 程序,不过通常以 i 为扩展名。
- 编译:将得到的 i 文件翻译成汇编代码,通常以 s 为扩展名。
- 汇编:将汇编文件翻译为机器指令,并打包成可重定位目标程序的 o 文件。
- 链接:将引用的其它 o 文件加到汇编后的 o 文件中,处理后得到最终的可执行文件。
这里首先在 linux 操作系统中编写源代码,并命名为 hello.c,内容如下:
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
一个很简单的源代码,但是这样的源代码如果不是在集成开发环境(Integrated Development Environment,IDE)中是不能够直接点击执行的,需要经过一系列的操作,具体为:
# 预处理
gcc -E hello.c -o hello.i
# 编译
gcc -S hello.i -o hello.s
# 汇编
gcc -c hello.s -o hello.o
# 链接
gcc hello.o -o hello
经过以下操作后,就能够发现在 hello.c 文件同级目录中出现了文件 hello.i,hello.s,hello.o,hello。可知文件 hello 即为可执行程序,我们在终端中输入下方的指令,就能够看到最后的输出结果。
./hello