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 ,执行之