# 第二周课堂实践以及MyOD

第二周课堂实践以及MyOD

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

测试3——gdb测试

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

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

测试4——静态库的测试

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

  • Mac系统下重新试验成功。
    1072288-20171001230843872-948334163.jpg

测试5——共享库

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

  • Mac系统下重新试验成功。
    1072288-20171001230853559-1875194296.jpg

测试6——Makefile

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

  2. 提交Make过程截图,要全屏,包含自己的学号信息
  • Mac系统下试验成功。
    1072288-20171001230935200-1543259125.jpg

MyOD

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

  • 动态库:
    1072288-20171001235411075-1063865191.png

转载于:https://www.cnblogs.com/nxy970408/p/7618218.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值