一个程序是如何生成的
一个程序是如何生成的
很多刚接触编程的同学,应该都会学到一个“Hello world”的程序,通常教程中都会教先安装一个IDEA,然后在IDEA中敲入代码,编译然后运行,简单的“Hello world”程序就完成了。但你是否有想过从敲完代码后的源文件,到输出“Hello world”的可执行文件,这中间到底经历了什么过程呢?下面由我根据最近学到的知识,讲解一下这中间经历的过程吧。
- 预处理——将源文件当中的预处理指令替换为对应的内容。
gcc -E 源文件 - 编译——将预处理后的文件转换成对应的汇编文件,此时会生成一个.s结尾的汇编文件。
gcc -S 源文件或前一步生成的汇编文件 - 汇编——将汇编文件转换为目标文件(二进制码文件),此时会生成一个.o结尾的目标文件。
gcc -c 源文件或前一步生成的汇编文件 - 链接——将前一步生成的目标文件和系统的库(静态库或动态库)文件,合并生成为可执行文件。
gcc 源文件或前一步生成的多个目标文件 - 运行——目录下的可执行文件的方式,一般如果是当前目录下,需要加./,否则会将其当做系统指令运行。
./a.out
编译期出的错误,一般为C语言语法性的错误。
链接期的错误,一般为找不到实际调用的错误。
运行期的错误,分两种:
(1)会导致程序崩溃的错误,一般是由于不符合系统处理的错误,一般是由于不符合系统处理的错误。
(2)数据类型错误。