第一题
0. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
- 用Vi输入图中代码,并用gcc编译通过
- 在Vi中使用K查找printf的帮助文档
- 提交vi编辑过程截图,要全屏,包含自己的学号信息
首先我们先在虚拟机cd到自己当前的文件
然后利用vi hello.c继续编写代码即可
分别将那些代码vi到自己目录之下
然后利用gcc *.c编译即可
第二题
- 用gcc 进行预处理,编译,汇编,链接vi输入的代码
- 生成的可执行文件中要有自己的学号
- 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
第二题主要考察的是gcc
第三题
- 用gcc -g编译vi输入的代码
- 在main函数中设置一个行断点
- 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
- 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
首先我们需要输入命令看该电脑是否安有gdb
即 rpm -qa |grep gdb然后发现并没有安装,那么我们需要对gdb进行安装
首先我们要写一个学号的for循环
并且记住自己所写的行数
之后输入gcc *-0 main的命令 然后输入 gdb main 再用if 插入行数即可
出现的问题,在选取文件上出现了问题,后来经过提示之后,改正了。
第四题
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
- 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
所谓的静态库就是将自己文件的后缀调整为其他,而不能够让其他人知晓的做法。
第一步要先将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
第五题
-
除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库
-
提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
-
动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成。
-
动态链接库的名称有别名(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即可