zoukankan      html  css  js  c++  java
  • 20155212 2017-2018-1 《信息安全系统设计》第2周课堂实践

    1-VI

    1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
    2. 用Vi输入图中代码,并用gcc编译通过
    3. 在Vi中使用K查找printf的帮助文档
    4. 提交vi编辑过程截图,要全屏,包含自己的学号信息
    • 相关知识
      • vi的使用
    • 截图

    2-gcc测试

    1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码
    2. 生成的可执行文件中要有自己的学号
    3. 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
    • 相关知识
      • ESC---ISO
    • 截图

    3-gdb测试

    1. 用gcc -g编译vi输入的代码
    2. 在main函数中设置一个行断点
    3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
    4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    • 相关知识
      • 要调试代码在用gcc编译时必须加上-g参数
      • 使用gdb设置断点
        • 行断点
        • 临时断点
        • 函数断点
        • 条件断点
    • 截图

    4-静态库的测试

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

    5-共享库

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

    6-MyOD

    1. 复习c文件处理内容
    2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
    3. main与其他分开,制作静态库和动态库
    4. 编写Makefile
      5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
    • main.c
    #include <stdio.h>
    #include <string.h>
    #define MAXDATA 1024
    
    int main(int args, char **argv)
    {
        FILE *fp;
        long chnum;
        if((fp=fopen(argv[1], "r"))==0)
    	{
    		printf("文件为空");
    		exit(0);
    	}
    
        char data[MAXDATA];
        int i=0;
        char ch;
    
        while((ch=fgetc(fp))!=EOF)
        {
            if(i<MAXDATA)
            {
                data[i++]=(char)ch;
            }
        }
        chnum=i;
        odfunction(chnum,data);
    	fclose(fp);
    	return 0;
    }
    
    
    • odfunction.c
    int odfunction(int num, char data[])
    {
    	int i,j;
    	for(i=0; i<num; i=i+4)
        {
            if(i%16==0)
            {
                printf("
    %07o		", i);
            }
            printf(" %02x%02x%02x%02x	", data[i+3], data[i+2], data[i+1], data[i]);
            if((i+4)%16==0)
            {
                printf("
    	  ");
                for (j = i - 12; j < i+4 ; j++)
                {
                    if ((int)data[j] == 10)
                    {
                        printf(" \");
                        printf("n ");
                    }
                    else
                    {
                        printf("  %c ", data[j]);
                    }
                }
            }
            if(data[i+4]==0)
            {
                printf("
    	   ");
                for(j = i-i%16; data[j-3] != 0; j++)
                {
                    if((int)data[j] == 10)
                    {
                        printf(" \");
                        printf("n  ");
                    }
                    else
                    {
                        printf(" %c ", data[j]);
                    }
                }
                break;
            }
        }
        printf("
    %07o
    ", i+2 );
    }
    
    • Makefile
    MyOD2: main.c odlib.so
    	gcc -o MyOD2 main.c ./odlib.so
    odlib.so: odfunction.c
    	gcc -shared -fpic -o odlib.so odfunction.c
    MyOD1: odlib.a main.o
    	gcc -static -o MyOD1 main.o ./odlib.a
    main.o: main.c 
    	gcc -c main.c
    odlib.a: odfunction.o
    	ar rcs odlib.a odfunction.o
    odfuncitopn.o: odfuntion.c
    	gcc -c odfuntion.c
    
    • 截图

    7-Makefile

    1. 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
    2. 提交Make过程截图,要全屏,包含自己的学号信息
    • Makefile
    testmymath: main.c add.c sub.c mul.c div.c
    	gcc -Og -o testmymymath main.c add.c sub.c mul.c div.c
    
    • 截图

    码云链接

  • 相关阅读:
    SQL多表组合查询
    软件测试基础知识点
    Jenkins可持续集成Python自动化脚本
    自动化总结(三) Unittest的应用2
    unittest单元测试2(转载)
    unittest单元测试(转载)
    自动化总结(二) Unittest的应用
    自动化测试小结(一)
    初识ES数据库(转载)
    功能测试小结(三)
  • 原文地址:https://www.cnblogs.com/dky20155212/p/7604804.html
Copyright © 2011-2022 走看看