1-VI
- 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
- 用Vi输入图中代码,并用gcc编译通过
- 在Vi中使用K查找printf的帮助文档
- 提交vi编辑过程截图,要全屏,包含自己的学号信息
- 相关知识
- 截图
2-gcc测试
- 用gcc 进行预处理,编译,汇编,链接vi输入的代码
- 生成的可执行文件中要有自己的学号
- 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
- 相关知识
- 截图
3-gdb测试
- 用gcc -g编译vi输入的代码
- 在main函数中设置一个行断点
- 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
- 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
- 相关知识
- 要调试代码在用gcc编译时必须加上
-g
参数 - 使用gdb设置断点
- 截图
4-静态库的测试
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
- 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
- 相关知识
- 截图
5-共享库
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
- 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
- 相关知识
- 截图
6-MyOD
- 复习c文件处理内容
- 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
- main与其他分开,制作静态库和动态库
- 编写Makefile
5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
#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;
}
int odfunction(int num, char data[])
{
int i,j;
for(i=0; i<num; i=i+4)
{
if(i%16==0)
{
printf("\n%07o\t\t", i);
}
printf(" %02x%02x%02x%02x\t", data[i+3], data[i+2], data[i+1], data[i]);
if((i+4)%16==0)
{
printf("\n\t ");
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("\n\t ");
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("\n%07o\n", i+2 );
}
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
- 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
- 提交Make过程截图,要全屏,包含自己的学号信息
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
- 截图