第二周测试
测试1
用vi输出图中代码,每个.c,.h一个文件
在vim编辑器中,将光标移动到printf的位置,按k使用帮助文档
测试2
- 预处理:
gcc –E main.c –o hello.i;
gcc –E调用cpp
- 编 译:
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命令如何编译和链接这几个文件。我们的规则是:
- 如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
- 如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
- 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
编写makefile为如图
输入make创建文件testmymath,失败,在写入定义如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头
输入make创建成功,运行。