1-vi .c文件 .h文件
本实验的过程在test/test4中:
代码:
20199302.h

ifndef HEAD_H

define HEAD_H

int add(int,int);
int sub(int,int);
int mul(int,int);
double div(int,int);

endif

sub.c

include "20199302.h"

int sub(int a,int b)
{
return a-b;
}

add.c

include "20199302.h"

int add(int a,int b)
{
return a+b;
}

mul.c

include "20199302.h"

int mul(int a,int b)
{
return a*b;
}

div.c

include "20199302.c"

double div(int a,int b)
{
return a/b;
}

main.c

int main(void)
{
int a,b;
printf("enter two numbers:");
scanf("%d %d",&a,&b);
printf("sub:%d\n",add(a,b));
printf("sub:%d\n",sub(a,b));
printf("mul:%d\n",mul(a,b));
printf("div:%lf\n",div(a,b));
return 0;
}

编译:

出错,引用了错误的文件,应该改为.h,改正

编译成功:

执行结果中除法有问题,但是代码没有问题,所以不知道是什么原因,如下图所示:

vi-2

GCC编译流程
预处理,头文件和宏定义:gcc -E 20199302.c -o 20199302.i

编译阶段,将代码翻译成汇编语言:gcc -S 20199302.i -o 20199302.s

汇编阶段,将.s文件转成目标文件,二进制目标代码 gcc -c 20199302.s -o 20199302.o

最后一步

vi-3

  1. 用gcc -g编译vi输入的代码
  2. 在main函数中设置一个行断点
  3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
  4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    gcc -g hello.c -o main
    Gdb main
    b num
    b 行数 if 表达式
    r
    q

vi-4

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

静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文件);链接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so”。
静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;
静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx

生成mymath.a静态库

使用mymath.a

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

vi-6
1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
2 提交Make过程截图,要全屏,包含自己的学号信息
首先写makefile

testmymath:main.o add.o sub.o mul.o div.o
gcc mian.o add.o sub.o mul.o div.o -o testmymath
main.o:main.c 20199302.h
gcc -c main.c -o main.o
add.o:add.c 20199302.h
gcc -c add.c -o add.o
sub.o:sub.c 20199302.h
gcc -c sub.c -o sub.o
mul.o:mul.c 20199302.h
gcc -c mul.c -o mul.o
div.o:div.c 20199302.h
gcc -c div.c -o div.o
clean:
rm -f *.o testmymath

posted on 2019-09-25 21:59  20199302  阅读(2238)  评论(0编辑  收藏  举报