20171012课堂测试

20171012课堂测试

1-vi

  1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
  2. 用Vi输入图中代码,并用gcc编译通过
  3. 在Vi中使用K查找printf的帮助文档
  4. 提交vi编辑过程截图,要全屏,包含自己的学号信息

第一次运行时我错把.c文件和.h文件在同一个文件夹里打开,导致程序运行错误,课下反思了一下,把每个程序分别用vi打开,重新运行如下:

用光标指在printf行,键盘单机K,查找printf的帮助文档:

2-gcc

  1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码
  2. 生成的可执行文件中要有自己的学号
  3. 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息

课上对预处理编译汇编链接有点没搞懂,所以没来得及提交,课下自己通过网上查找,了解了-E -S -C 以及 -i -s -o的含义:

预处理

预处理是C语言程序从源代码变成可执行程序的第一步,主要是C语言编译器对各种预处理命令进行处理,包括头文件的包含、宏定义的扩展、条件编译的选择等。打印出预处理之后的结果:gcc -E hello.c 或者 cpp hello.c这样我们就可以看到源代码中的各种预处理命令是如何被解释的,从而方便理解和查错。

编译

编译之前,C语言编译器会进行词法分析、语法分析(-fsyntax-only),接着会把源代码翻译成中间语言,即汇编语言。如果想看到这个中间结果,可以用-S选项。语法检查之后是翻译动作,gcc提供了一个优化选项-O,以便根据不同的运行平台和用户要求产生经过优化的汇编代码

汇编

把作为中间结果的汇编代码翻译成了机器代码,即目标代码,不过它还不可以运行。如果要产生这一中间结果,可用gcc的-c选项

链接

链接是处理可重定位文件,把它们的各种符号引用和符号定义转换为可执行文件中的合适信息(一般是虚拟内存地址)的过程。

posted @ 2017-10-18 21:39  20179205王雅哲  阅读(179)  评论(1编辑  收藏  举报