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.c
    3. /*----------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创建)

#include <stdio.h>

#include "greeting.h"

#define N 10

int main()

{

        char name[N];

        printf("Your name,please:");

        scanf("%s",name);

        greeting(name);

        return 0;

}

2.2 greeting.h

#ifndef _GREETING_H

#define _GREETING_H

void greeting(char *name);

#endif


2.3greeting.c


#include <stdio.h>

#include "greeting.h"

void greeting(char *name)

{

        printf("Hello %s",name);

}

2.4Makefile文件和make

vim Makefile创建并输入代码

myapp:greeting.o myapp.o

        gcc myapp.o greeting.o -o myapp

greeting.o:greeting.c greeting.h

        gcc -c greeting.c

myapp.o:myapp.c greeting.h

        gcc -c myapp.c

clean:

        rm -rf *.o

make编译及最终结果:

  • 17
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件系统是计算机操作系统中的一个重要组成部分,它为用户提供了管理文件和目录的接口,使得用户可以方便地存储和获取自己的数据。在Linux系统中,文件系统是由内核提供的,通过挂载的方式将其连接到用户空间。为了更好地理解文件系统的工作原理和实现方式,可以通过实验的方式来进行深入学习。下面我将介绍一下LinuxC语言实现文件系统实验的实验分析。 实验目的: 通过本实验,可以了解文件系统的工作原理和实现方式,掌握文件系统的设计和实现方法,加深对文件系统的理解和应用。 实验内容: 1. 设计一个简单的文件系统,支持创建、删除、读取和写入文件,并能够管理文件和目录。 2. 使用C语言实现文件系统的各个模块,包括文件系统的格式化、文件和目录的创建、删除和管理等。 3. 在Linux系统上进行测试,验证文件系统的正确性和可靠性。 实验步骤: 1. 设计文件系统的数据结构和布局,包括超级块、inode表、目录项、数据块等。 2. 实现文件系统的格式化程序,将磁盘空间划分为固定大小的块,并初始化超级块和inode表。 3. 实现文件和目录的创建和删除程序,包括创建文件和目录、删除文件和目录等操作。 4. 实现文件和目录的读取和写入程序,包括从磁盘读取文件和目录数据、将数据写入到磁盘等操作。 5. 实现文件和目录的管理程序,包括查找文件和目录、更新文件和目录的属性等操作。 6. 编写测试程序,验证文件系统的正确性和可靠性,包括创建文件和目录、读取和写入文件、删除文件和目录等操作。 实验结果: 通过实验,可以实现一个简单的文件系统,支持基本的文件和目录操作,并能够在Linux系统上进行测试。实验结果可以验证文件系统的正确性和可靠性,同时也可以加深对文件系统的理解和应用。 总结: LinuxC语言实现文件系统实验是一项非常有意义的实验,它可以帮助我们深入理解文件系统的工作原理和实现方式,掌握文件系统的设计和实现方法,加深对文件系统的理解和应用。通过实验,可以实现一个简单的文件系统,验证其正确性和可靠性,并为后续研究和应用提供一定的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值