• # 第二周课堂实践以及MyOD


    第二周课堂实践以及MyOD

    之前使用的虚拟机出现问题被我删掉了,开始学着使用Mac系统自带的终端。在课堂上出现了问题,询问王雄老师也没有解决,课下先使用了实验楼环境进行实验,后来又在Mac重新进行了尝试。

    测试3——gdb测试

    1. 用gcc -g编译vi输入的代码
    2. 在main函数中设置一个行断点
    3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
    4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    • 一开始在课堂上测试3未能做出来,耗费了太多时间导致4、5也没有做。在实验楼测试结果如下,出现了红线部分错误。

    • 在Mac出现这样的错误,百度后了解到mac系统的gdb需要自己创建证书对gdb证书签名。(跟着教程走后再次尝试也出现了相同错误,这次就不知道原因了。)

    测试4——静态库的测试

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
    2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    • 在实验楼环境出现了如下错误,猜测可能与导致测试3错误的原因有关。

    • Mac系统下重新试验成功。

    测试5——共享库

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
    2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    • 在实验楼环境出现了如下错误,猜测可能与导致测试3错误的原因有关。

    • Mac系统下重新试验成功。

    测试6——Makefile

    1. 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

    2. 提交Make过程截图,要全屏,包含自己的学号信息

    • Mac系统下试验成功。

    MyOD

    1. 复习c文件处理内容
    2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
    3. main与其他分开,制作静态库和动态库
    4. 编写Makefile
    5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
    6. 在博客园发表一篇博客,重点写遇到的问题和解决过程
    • MyOD编写成功
    main.c
    
    #include "head.h"
    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
            char filename[50];
            printf("input filename: ");
            scanf("%s",filename);
            ascii(filename);
            Hexa(filename);
    }
    
    ascii.c
    
    #include "head.h"
    #include<stdio.h>
    #include<stdlib.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("%d, ",ch);
                    }
                    ch=fgetc(fp);
            }
    }
    
    Hexa.c
    
    #include "head.h"
    #include<stdio.h>
    #include<stdlib.h>
    void Hexa(char *filename)
    {
            FILE *fp;
            char ch;
            printf("Hexadecimal numbers: 
    ");
            fp=fopen(filename,"r");
            ch=fgetc(fp);
            while(ch != EOF)
            {
                    if(ch=='
    ')
                    {
                            printf("
    ");
                    }
                    else
                    {
                            printf("%x, ",ch);
                    }
                    ch=fgetc(fp);
            }
            fclose(fp);
    }
    
    • 静态库:在Mac系统下出现如下问题,询问同学、查阅资料后也没有得到解决

    • 动态库:

  • 相关阅读:
    《自己动手写操作系统》:开发环境配置心得
    sip.conf配置详情
    MySQL字符串中数字排序的问题
    Asterisk iax错误提示
    Python 快速入门
    C# winfrom 导出word
    SetWindowsHookEx函数参数详解
    Ubuntu Linux系统下轻松架设nginx+php服务器应用
    TShockwaveFlash的使用
    检讨
  • 原文地址:https://www.cnblogs.com/nxy970408/p/7618218.html
Copyright © 2020-2023  润新知