第一题
0. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号

  1. 用Vi输入图中代码,并用gcc编译通过
  2. 在Vi中使用K查找printf的帮助文档
  3. 提交vi编辑过程截图,要全屏,包含自己的学号信息

首先我们先在虚拟机cd到自己当前的文件
然后利用vi hello.c继续编写代码即可
分别将那些代码vi到自己目录之下
然后利用gcc *.c编译即可

第二题

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

第二题主要考察的是gcc

第三题

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

首先我们需要输入命令看该电脑是否安有gdb
即 rpm -qa |grep gdb然后发现并没有安装,那么我们需要对gdb进行安装
首先我们要写一个学号的for循环
并且记住自己所写的行数
之后输入gcc *-0 main的命令 然后输入 gdb main 再用if 插入行数即可

出现的问题,在选取文件上出现了问题,后来经过提示之后,改正了。

第四题

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    所谓的静态库就是将自己文件的后缀调整为其他,而不能够让其他人知晓的做法。

第一步要先将c文件转换成o文件
静态链接库的生成:
gcc -c 文件名.c ar rcsv libxxx.a xxx.o;

静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx

然后再实现命令

ar cr math.a add.o sub.o mul.o div.o
gcc main.c ./math.a -o main

第五题

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库

  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

  3. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成。

  4. 动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name)。别名由一个前缀lib,然后是库的名字,再加上一个后缀“.so”构成。真名是动态链接库真实名称,一般总是在别名的基础加上一个小版本号,发布版本等构成。除此之外,还有一个链接名,即程序链接时使用的库的名字。

3.在动态链接库安装的时候,总是复制文件到某个目录下,然后用一个软连接生成别名,在库文件进行更新的时候,仅仅更新软链接即可。

共享库的生成

gcc -fPIC -c add.c sub.c mul.c div.c
gcc -shared -o libmymath.so add.o sub.o mul.o div.o

共享库的使用

gcc -o main main.c -L. -lmymath

第六题

1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

2 提交Make过程截图,要全屏,包含自己的学号信息

关于makefile的介绍

make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。

makefile文件编写规则:

目标文件 :由make创建,通常是目标文件或可执行文件

依赖文件 :创建目标体所依赖的文件

运行命令 :创建每个目标体时需要的运行命令,必须以tab键开头,格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)

使用make的格式:make目标文件
注意一定要用tab 键
首先建立一个makefile的文件
vim makefile
然后在里面将前面的代码敲入

testmymath: main.o add.o sub.o mul.o div.o

gcc main.o add.o sub.o mul.o div.o -o testmymath

main.o: main.c head.h

gcc -c main.c

add.o: add.c head.h

gcc -c add.c

sub.o: sub.c head.h

gcc -c sub.c

mul.o: mul.c head.h

gcc -c mul.c

div.o: div.c head.h

gcc -c div.c

之后用make运行

再用./testmymath即可