0


Linux下C程序的编写(操作系统实验)

实验题目: Linux下C程序的编写

实验目的: (1)掌握Linux下C程序的编写、编译与运行方法;

(2)掌握gcc编译器的编译过程,熟悉编译的各个阶段;

(3)熟悉Makefile文件的编写格式和make编译工具的使用方法。

实验环境(硬件和软件) VMware Workstation,Linux

实验内容:

练习使用gcc编译器编译C程序并执行,编写Makefile文件,使用make工具编译程序并执行。具体内容如下:

  1. 编写简单C程序,功能为在屏幕上输出“Hello gcc!”。利用该程序练习使用gcc编译器的E,S,c,o,g选项,观察不同阶段所生成的文件,即*.c,.i,.s,*.o文件和可执行文件。
  2. 编写一个由头文件greeting.h、自定义函数greeting.c、主函数myapp.c构成的C程序,并根据这三个文件的依赖关系编写Makefile文件。

实验步骤:

(1)1.创建空文档,修改名称为myhello.c,出入程序代码,保存并退出。
2.打开终端,使用gcc命令对上述文档分阶段编译。
3.利用ls命令查看编译过程产生的各个文件。即myhello.c、myhello.s、myhello.o文件和可执行文件myhello.c。

(2)Makefile文件的编写。使用make工具编译程序,在终端提示符后输入“make”,并按Enter。

实验数据记录:

    1. vim创建空文档myhello.c,输入程序代码,Esc后:wq保存并退出。2. vim myhello.c3. /*----------myhello.c----------*/#include <stdio.h>int main(){ printf("Hello gcc!\n"); return 0;}

1.2使用gcc命令对上述文档分阶段编译。

gcc -E myhello.c -o myhello.i # 预处理阶段

gcc -S myhello.i -o myhello.s # 编译阶段

gcc -c myhello.s -o myhello.o # 汇编阶段

gcc myhello.o -o myhello # 链接阶段

还可以直接编译gcc myhello.c -o myhello

3.利用ls命令查看编译过程产生的各个文件。即myhello.c、myhello.s、myhello.o文件和可执行文件myhello.c。

运行结果:

(2)Makefile文件的编写。使用make工具编译程序,在终端提示符后输入“make”,并按Enter。

2.1myapp.c文件: (vim myapp.c创建)

  1. #include <stdio.h>
  2. #include "greeting.h"
  3. #define N 10
  4. int main()
  5. {
  6. char name[N];
  7. printf("Your name,please:");
  8. scanf("%s",name);
  9. greeting(name);
  10. return 0;
  11. }

2.2 greeting.h

  1. #ifndef _GREETING_H
  2. #define _GREETING_H
  3. void greeting(char *name);
  4. #endif

2.3greeting.c

  1. #include <stdio.h>
  2. #include "greeting.h"
  3. void greeting(char *name)
  4. {
  5. printf("Hello %s",name);
  6. }

2.4Makefile文件和make

vim Makefile创建并输入代码

  1. myapp:greeting.o myapp.o
  2. gcc myapp.o greeting.o -o myapp
  3. greeting.o:greeting.c greeting.h
  4. gcc -c greeting.c
  5. myapp.o:myapp.c greeting.h
  6. gcc -c myapp.c
  7. clean:
  8. rm -rf *.o

make编译及最终结果:

标签: linux c语言 运维

本文转载自: https://blog.csdn.net/weixin_64489160/article/details/136992897
版权归原作者 非凡的大师 所有, 如有侵权,请联系我们删除。

“Linux下C程序的编写(操作系统实验)”的评论:

还没有评论