【C语言】学习C语言之准备工作

  程序员与计算机的关系,简单说程序编写代码计算机执行。问题是直接用计算机能够直接执行的代码进行映射,是一件复杂的事情。因为就发明了贴近群众的语言,这种语言与计算机能够执行的代码之间的鸿沟由专门的一批人进行研究,使贴近群众的语言能够自动化的翻译成计算机可执行的代码。 因此这里就简单的表示为 编写源代码->编译器进行翻译->计算机执行。
  编写源代码是程序员利用C语言,当然也有其他编程语言,例如Java、Python、C++等(上百种)。这里就简单介绍一下C编译器是如翻译C语言的,局限于步骤。至于如何实现的,对于我们来说并不重要。


组成一个程序的每个源文件通过编译过程分别转换为目标文件,然后,各个目标文件由链接器捆绑在一起,如果程序中使用到了,C语言的标准函数库,也会通过链接器捆绑到一起。为此,源代码->可执行文件会经过预处理、编译、汇编、链接形成可执行文件。

1. 预处理,预处理器对源文件中的预处理指令做简单的替换,例如,使用#define定义的符号,都会被替换实际的值。读入由#include包含的文件的内容。

这里通过gcc,演示一下这一阶做了什么事情。编写两个源文件main.c,hello.c.


接下来在终端窗口中,执行GCC -E main.c。


还可以预处理器帮我们隐藏代码:



2. 编译:源代码经过解析(parse),判断它的语句的意思.这一阶段会检查语法是否有问题,例如缺花括号等。

我使用了一个未定义的符号,这里给我报出了错误。


3. 汇编。源码经过解析,判断没有错误后,产生汇编代码。

gcc -S 产生汇编


4. 产生目标代码。汇编器把汇编代码翻译成机器代码,产生目标文件。

gcc -c 产生目标文件


5. 链接。链接目标文件,产生可执行文件。

gcc *.o *.o -omain 这个执行表示链接多个目标文件,生成可执行文件




参考资料:《C和指针》

猜你喜欢

转载自blog.csdn.net/nucleus_ripples/article/details/80078128
今日推荐