C入门语言基础一[可移植性、涉及的三种文件、编程7个步骤、编译器、链接器]

Review Questions

What dose portability mean in the context of programming?

文中讲到的可移植性是什么意思?

  C本身是不涉及具体系统底层操作的高级语言,C源代码由对应系统的编译器编译、链接生成对应系统需要的可执行机器码,所以编写好C语言源代码之后,不需要改动或者很少改动(涉及指定系统的)很少代码,即可在不同操作系统中移植,这就是文中讲到的可移植性。

Expain the difference between a source code file, object code file, and executable file.

阐述源代码文件、目标代码文件、可执行文件之间的差异。

  • 源代码文件是用C语言的语法写成的代码文件,保存了各种逻辑和操作
  • 类文件是将源代码文件编译之后,只包含源代码文件的可执行代码,不包括不同系统的启动代码段、引用外部或标准库的相应代码信息
  • 可执行文件是包含
    1. 源代码编译之后的可执行代码
    2. 源代码中引入的外部、标准库的代码生成的可执行代码
    3. 操作系统相关的启动代码段(startup code)

      这三部分代码的文件,可执行代码是系统相关的,而且可以执行运行。

What are the seven major steps in programming?

编程的7个主要步骤是什么?

  1. [Define the program objectives定义程序目标]
    分析设计需要解决的现实问题,包括需要提供的信息,系统能计算返回的信息、中间需要的步骤等
  2. [Design the program设计程序]
    设计程序的整体架构,包括输入输出数据结构、相关接口等信息
  3. 编写代码实现功能
  4. 编译代码
  5. 执行程序
  6. 测试、调试程序
  7. 维护、调整程序

What does compiler do ?

编译器做什么?

  编译器首先能检查源码代码中有无语法错误或者引用错误的情况,然后将源代码编译成相应的可执行代码片段,预备使用。

编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查。如果编译通过,就会把对应的CPP转换成OBJ文件。

What does a linker do?

链接器做什么?

  链接器负责将各个源代码的相互引用、对标准库的引用整合到一个可执行文件中,再在可执行文件中添加系统相关的启动代码段,生成一个当前系统可运行的可执行文件。

  当链接器进行链接的时候,首先决定各个目标文件在最终可执行文件里的位置。然后访问所有目标文件的地址重定义表,对其中记录的地址进行重定向(加上一个偏移量,即该编译单元在可执行文件上的起始地址)。

  然后遍历所有目标文件的未解决符号表,并且在所有的导出符号表里查找匹配的符号,并在未解决符号表中所记录的位置上填写实现地址。最后把所有的目标文件的内容写在各自的位置上,再作一些另的工作,就生成一个可执行文件。

原文地址:https://www.cnblogs.com/zhuangmingnan/p/9000163.html