zoukankan      html  css  js  c++  java
  • 2019-2020-1 20209311《Linux内核原理与分析》 MyOD

    2019-2020-1 20209311《Linux内核原理与分析》 MyOD

    任务详情
    1.复习c文件处理内容
    2.编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
    3.main与其他分开,制作静态库和动态库
    4.编写Makefile
    5.提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
    6.在博客园发表一篇博客,重点写遇到的问题和解决过程

    使用的代码

    head.h

    #ifndef HEAD_H
    #define HEAD_H
    void hex(char *name);
    void ascii(char *name);
    #endif
    

    myod.c

    #include "../include/head.h"
    #include <stdio.h>
    void main()
    { 
      char filename[50];
      printf("please input the filename:");
      scanf("%s",filename);
      hex(filename);
      ascii(filename);
    }
    

    hex.c

    #include "../include/head.h"
    #include <stdio.h>
    void hex(char *filename)
    {
      FILE *fp;
      char ch;
      fp=fopen(filename,"r");
      ch=fgetc(fp);
      printf("Hex:
    ");
      while(ch!=EOF)
      {
        if(ch=='
    ')
          printf("
    ");
        else
          printf("%4x",ch);
          ch=fgetc(fp);
      }
      fclose(fp);
    }
    

    ascii.c

    #include "../include/head.h"
    #include <stdio.h>
    void ascii(char *filename)
    {
      FILE *fp;
      char ch;
      fp=fopen(filename,"r");
      ch=fgetc(fp);
    	printf("Ascii:
    ");
      while(ch!=EOF)
      {
        if(ch=='
    ')
          printf("
    ");
        else
        	printf("%4d",ch);
        	ch=fgetc(fp);
      }
      fclose(fp);
    }
    

    Makefile

    VPATH=src:bin:include
    
    testmyod-20209311:myod.o ascii.o hex.o
            gcc ./bin/myod.o ./bin/ascii.o ./bin/hex.o -o ./bin/testmyod-20209311
    myod.o:myod.c head.h
            gcc -c ./src/myod.c  -I ./include -o ./bin/myod.o
    ascii.o:ascii.c head.h
            gcc -c ./src/ascii.c  -I ./include -o ./bin/ascii.o
    hex.o:hex.c head.h
            gcc -c ./src/hex.c  -I ./include -o ./bin/hex.o
    
    myod.a:myod.o ascii.o hex.o
            ar rcvs ./lib/libmyod.a ./bin/myod.o ./bin/ascii.o ./bin/hex.o
    myod.so:myod.o ascii.o hex.o
            gcc -shared -o ./lib/libmyod.so ./bin/myod.o ./bin/ascii.o ./bin/hex.o
    

    运行结果截图



    遇到的问题及解决方案

    1.VPATH=src:bin:include可以在当前目录找不到所依赖的文件的情况下,到所指定的目录中去找寻文件。但要注意,VPATH只能指定依赖文件的位置,gcc的命令中依然需要指定文件位置。
    2.当Makefile中存在多个目标时,默认执行第一个,要执行其他文件需要在make命令后加目标名。
    参考资料:Makefile VPATH和vpath的使用

  • 相关阅读:
    iBatis,第二次亲密接触
    微斯人,吾谁与归
    一个月了
    生命在于运动
    眼皮跳了好几天
    往返
    中病毒,学习批处理

    爱如潮水
    今天夏至
  • 原文地址:https://www.cnblogs.com/dkkk7/p/13837444.html
Copyright © 2011-2022 走看看