2017-2018-1 20155231 《信息安全系统设计基础》 第二周课堂测试

第二周测试

测试1

用vi输出图中代码,每个.c,.h一个文件

在vim编辑器中,将光标移动到printf的位置,按k使用帮助文档

测试2

  1. 预处理:
gcc –E main.c –o hello.i;

gcc –E调用cpp

  1. 编 译:
gcc –S main.i –o main.s;

gcc –S
调用ccl
3. 汇 编:

gcc –c main.s –o main.o;

gcc -c 调用as
4. 链 接

:gcc main.o  add.o sub.o mul.o div.o –o main;

gcc -o 调用ld。

每个.c文件运行获得.o文件,将所有.o文件链接得到可执行文件。

测试3

gcc -g

编译得到了可执行文件,用gdb调试文件,输入(gdb) l显示文本,输入(gdb)b n在第n行设置断点

在main函数中加入循环

for(i=0;i<5231;i++)

,设置条件断点,

(gdb)b if i=2615
gdb(r)

运行

测试4 静态库

使用AR工具创建静态库

ar rcs mymath20155231.a add.o sub.o div.o mul.o

链接输入文件main.o和mymath20155231.a

gcc -static -o prog20155231 main.o ./mymath20155231.a

输入

./prog20155231

调用静态库。

测试5 共享库

创建库

gcc -shared -fpic -o mymath20155231.so add.c sub.c mul.c div.c

创建可执行文件

gcc -o prog20155231s main.o ./mymath20155231.so

运行文件。

测试6 Makefile

要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:

  1. 如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
  2. 如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
  3. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。

编写makefile为如图

输入make创建文件testmymath,失败,在写入定义如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头

输入make创建成功,运行。

代码链接

posted @ 2017-10-01 20:47  名字最难取  阅读(272)  评论(2编辑  收藏  举报