2021.10.9测试提交

测试1-Vim or VSCode
  • 要求

  • 0.在Ubuntu下完成,在OpenEuler下完成有加分
    1.每个*.c一个文件,每个*.h一个文件,文件名中最好有自己的学号
    2.用Vim 或 VSCode输入图中代码,并用gcc编译通过
    3.在Vim 中使用K查找printf的帮助文档(使用vim的)
    4.提交Vim or VScode编辑过程截图,要全屏,包含自己的学号信息
    
  • 1.add.c

    vi add.c

  • 2.sub.c

    vi sub.c

  • 3.mul.c

    vi mul.c

  • 4.div.c

  • vi div.c

  • 5.main.c

    vi main.c

  • 6.head.h

    vi head.h

  • 7.查询printf

    man -K printf

测试2-gcc测试
  • 要求

  • 1.用gcc 进行预处理,编译,汇编,链接Vim或VScode输入的代码
    2.生成的可执行文件中要有自己的8位学号
    3.提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
    
  • 1.预处理|编译|汇编|链接

    gcc -E add.c -o add.i	//*.c同步处理,转为.i文件
    
    gcc -S add.i -o add.s	//*.i同步处理,转为.s文件
    
    gcc -c add.s -o add.o	//*.s同步处理,转为.o文件
    
    gcc main.o -o 20191314	//将main.o文件转为可执行文件,用学号命名
    
  • 2.上述处理后的文件截图

  • 3.运行结果

测试3-gdb测试
  • 要求

  • 1.用gcc -g编译测试1中输入的代码
    2.在main函数中设置一个行断点
    3.在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
    3.提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    
  • 0.使用gdb断点测试时需要先使用gcc -g来生成一个可执行文件

    gcc -g *.c
    

    这样会得到一个文件名为a.out的可执行文件,直接gdb a.out就可以进入gdb调试

  • 1.main函数的行断点

    在调试模式下,输入 l 可查看当前代码,设置行断点的方式为输入 "b 行数" ,然后输入 r 就可执行完这个程序

  • 2.main函数的条件断点

    和设置行断点类似,输入 "b 行数 断点条件" 就可以设置一个条件断点了,这里设置的是在 i=657 (学号后四位的一半)时断点

测试4-静态库的测试
  • 要求

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

    1.制作静态库需要 .o 文件,在前面就编译好了,所以有现成的,为了可以调试,还是要加上 gcc -g -c *.c 这一步

    gcc -g -c *.c

    2.生成mymath.a静态文件

    ar rcs mymath.a add.o sub.o mul.o div.o

    3.用静态库文件mymath.a生成一个可以执行的文件prog(program)

    gcc -g -static -o prog main.o ./mymath.a

    4.运行prog

    ./prog

    5.调试该文件,会发现和调试main函数一样



测试5-共享库
  • 要求

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

  • 动态共享库

    1.生成共享库文件 mymath.so

    gcc -g -shared -fpic -o mymath.so add.c sub.c mul.c div.c

    2.用共享(动态)库生成可执行文件progm

    gcc -g -o progm main.c ./mymath.so

    3.运行可执行文件 progm

    ./progm

    4.调试 progm ,与使用源文件时一样

测试6-Makefile
  • 要求

  • 1.写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
    2.提交Make过程截图,要全屏,包含自己的学号信息
    
  • 1.输入 sudo gedit Makefile 开始写一个makefile文件
    sudo gedit Makefile

    2.make直接运行,得到 testmymath 可执行文件,运行

测试7-Makefile 深入(选做)
  • 要求

  • 1.建立项目目录mymath,子目录有:src include lib bin源代码放入src, 头文件放入include, 生成的静态库,共享库放入lib,生成的中间文件,可执行文件放入bin,编辑makefile 放入mymath目录
    2.写出编译代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
    3.提交Make过程截图,要全屏,包含自己的学号信息
    
  • 1.将前面所得的文件依次放入不同的文件夹,重新编译链接即可,需要注意的,重新编译时要把头文件的地址通过 -I 参数输入
    ESc部分内容

    静态库

    共享(动态)库

  • 2.makefile文件的内容,与上面一样

  • 3.make,显示找不到main.o文件,稍后解决

  • 4.解决方法
    添加文件的路径,如 .o 文件在 /bin 文件夹中, .c 文件在 /src 文件夹中

    make,得到可执行文件 testmymath ,执行之

posted @ 2021-10-09 14:55  20191314汇仁  阅读(266)  评论(0编辑  收藏  举报