●实验目的:
学会编写Makefile文件。
●实验要求:
实现一应用程序,该程序由两个c文件构成,使用Makefile来完成对该程序的编译。
●实验器材:
硬件:PC机一台。
●实验步骤:
Makefile文件的编写步骤如下:
(1)先用vi编辑一个简单的c程序,由三个文件组成。
①文件fun.c内容。
②文件main.c内容。
③文件fun.h内容。
(2)使用gcc编译命令直接编译出可执行文件main,并运行查看结果,如图2.66所示。
图2.66 gcc编译命令直接编译出可执行文件并查看结果
(3)用vi编辑makefile,内容如下:
(4)退出并保存,在shell中键入make,查看并运行产生的可执行文件main,如图2.67所示。
图2.67 运行产生的可执行文件main
(5)用vi打开makefile进行改写,用变量进行替换,经变量替换后的makefile如下:
退出并保存后,在shell中执行make和make clean命令的效果与前面第4步是一样的。
(6)改写makefile,使用自动变量,改写后的情况如下:(www.xing528.com)
退出并保存后,在shell中执行make和make clean命令的效果与前面一样。
●上机报告要求:
1.总结选项-o,-E,-S,-c,-static,-g的作用。
-o选项的作用:指定目标文件名称。
-E选项的作用:只进行预处理,不做其他处理。
-S选项的作用:只是编译不汇编,生成汇编代码。
-c选项的作用:只是编译不连接,生成目标文件.o。
-static选项的作用:链接静态库。
-g选项的作用:在可执行程序中包含标准调试信息。
2.启动gdb的方式有几种?分别如何启动?
(1)gdb+调试程序名。
(2)gdb file调试程序名。
3.总结gdb中s(step)命令与n(next)命令的区别?finish命令与quit命令的区别?
s命令用于单步运行,另外n命令也用于单步运行,它们的区别在于:如果有函数调用的时候,s会进入该函数而n不会进入该函数。
finish命令用于运行程序,直到当前函数结束。
q命令用于退出gdb调试器。
4.编写makefile文件的三大构成要素是什么?分析第三个步骤的makefile,指出这三大要素分别对应的具体代码?
目标:依赖 命令
main: main.o fun.o
(Tab)gcc main.o fun.o-o main
main.o: main.c fun.h
(Tab)gcc-c main.c-o main.o
fun.o: fun.c fun.h
(Tab)gcc-c fun.c-o fun.o
Clean:
(Tab)rm-f main *.o
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。