2017-2018-1 20155325 《信息安全系统设计基础》0927课堂实践

课堂实践

静态库的测试

  • 要求
  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  • 我的截图

1071478-20171001204127778-1782251785.png

  • 知识点
    gcc -c 要封装的函数.c
    ar rcs 名1.a 要封装的函数.c
    gcc -c main.c
    gcc -static -o 名2 main.o ./名1.a

共享库

  • 要求
  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  • 截图

1071478-20171001204157184-722442070.png

  • 知识点
    gcc -shared -fpic -o 名.so 要封装函数.c
    gcc -o 名 main.c ./名.so

Makefile

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

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

  • 截图

1071478-20171001204219294-748308975.png

  • 知识点

testmymath: main.c add20155325.c sub20155325.c mul20155325.c div20155325.c
gcc -Og -o testmymymath main.c add20155325.c sub20155325.c mul20155325.c div20155325.c

myod

原版

1071478-20171001205042950-515401599.png

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void One(int LJ,int tx[],char tx2[]);
char Change(int t);
void TX(int H,int tx[]);
void main(int argc,char *argv[])
{
    FILE *fp;
    if((fp = fopen(argv[4],"r")) == NULL)
    {
        printf("   *** 文件打开失败***");
    exit(0);
    }
    if(strcmp(argv[1],"od")==0)
    {
        if(strcmp(argv[2],"-tc")==0)
    {
            if(strcmp(argv[3],"-tx1")==0)
        {
            char str[1000];
        int num,i,j,i2;
        int LJ,SY;
        int tx[8];
        char tx2[8];
        int tSY,Dan;
        for(num=0;num<strlen(str);num++)str[num]='0';
        num = 0;
        while((str[num]=getc(fp))!=EOF){num++;}
        for(LJ=0,SY=num;;)
        {
           for(j=0;j<8;j++)tx[j] = 0;
           One(LJ,tx,tx2);
           for(j=0;j<8;j++)printf("%c",tx2[j]);
           printf("  ");
           tSY = SY;
           if(tSY>=16)Dan = 16;
           else Dan = tSY;
           for(j=LJ;j<Dan+LJ;j++)
           {
              if(str[j]=='\n')printf("\\n      ");
              else printf("%c \t",str[j]);
           }
           printf("\n");
           int tt;
           printf("         ");
           for(j=LJ;j<Dan+LJ;j++)
           {
           tt = str[j];
           One(tt,tx,tx2);
           for(i2=0;i2<8;i2++)
           {
                 if(tx2[i2]!='0') printf("%c",tx2[i2]);
           }
           printf("  \t");
           }
           printf("\n");
           tSY =tSY-Dan;
           if(SY>=16)LJ = LJ+16;
           else if((SY>0)&&(SY<16))LJ = LJ+SY;
           else if(SY==0)break;
           SY = num-LJ;
        }
        }
        }
    }
    else printf("指令输入错误\n");
    fclose(fp);
}
void One(int LJ,int tx[],char tx2[])
char Change(int t);
{
    TX(LJ,tx);
    int i;
    for(i=0;i<8;i++)tx2[i] = Change(tx[i]);
}

char Change(int t)
{
    if((t>=0)&&(t<10))return t+48;
    else return t+87;
}

void TX(int H,int tx[])
{
    if(H>536870911)
    {
        printf("字符数太大,超出限制\n");
    exit(0);
    }
    int i = 7;
    for(;i>0;)
    {
       tx[i] = H%16;
       H = H/16;
       i--;
    }
}

问题

  1. 尝试过:git config -–global user.name "xxx"
  2. git config –-global user.email "xxx@xxx.com"
    无效
    然后我重新登录一下我的码云,发现原来的密码居然登不上去了,修改了密码之后,再推就能推上去了。

    感想

重新配置过虚拟机等,走完所有流程,我会在之后的博客中将详情记录下来。
本觉得Myod简单,结果处理了很久的bug,保持微笑。

转载于:https://www.cnblogs.com/GDDFZ/p/7617830.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值