- 1
- 0
- 约 51页
- 2016-09-12 发布于浙江
- 举报
* 如果目标名称为mytarget.so(image.o),则$@为mytarget.so,而$%为image.o Makefile的编写 Makefile中一般包含如下内容: 需要由make工具创建的项目,通常是目标文件和可执行文件。 要创建的项目依赖哪些文件。 创建每个项目时需要运行的命令。 Makefile举例 Makefile内容 factorial:main.o factorial.o gcc –o factorial main.o factorial.o main.o:main.c gcc –c main.c factorial.o:factorial.c gcc –c factorial.c Makefile简化写法 factorial:main.o factorial.o gcc –o $@ $^ main.o:main.c gcc –c $ factorial.o:factorial.c gcc –c $ gcc、rm、cp等命令前是tab分割符,不能用空格,否则会出现:“makefile:2: *** 遗漏分隔符 。 停止。”类似的错误 GNU make的主要预定义变量 $* 不包括扩展名的目标文件名称 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 $ 第一个依赖文件的名称 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚 $@ 目标的完整名称 $^ 所有的依赖文件,以空格分开,不包含重复的依赖文件 $% 如果目标是归档成员,则该变量表示目标的归档成员名称 Makefile举例 function1.h function2.h main.c function1.c function2.c function1.o main.o function2.o main 连接 编译 Makefile举例 Makefile内容 main: main.o function1.o function2.o gcc –o main main.o function1.o function2.o main.o: main.c function1.h function2.h gcc –c main.c function1.o: function1.c function1.h gcc –c function1.c function2.o: function2.c function2.h gcc –c function2.c clean: rm –f *.o Makefile举例 通过使用makefile的变量和隐含规则,可简化为如下形式: objects = main.o function1.o function2.o main: $(objects) gcc –o main $(objects) main.o: function1.h function2.h function1.o: function1.h function2.o: function2.h clean: rm –f *.o 跟我一起写Makefile /%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile 静态调试: 在程序编译阶段查错并修正错误; 主要为语法错误: 输入错误; 类型匹配错误; 排错方式: 利用错误、警告信息,并结合源文件环境排错 动态调试: 在程序运行阶段查错并修正错误; 主要错误类型: 算法错误; 输入错误; 排错方式: 利用调试工具定位并修正错误; 3. gdb程序调试工具(续) 3. gdb程序调试工具 程序中的错误按其性质可分为三种: (1)编译错误,即语法错误。主要是程序代码中有不符合所用编程语言语法规则的错误。 (2)运行错误。如对负数开平方,除数为0,循环终止条件永远不能达到等 。 (3)逻辑错误。这类错误往往是编程前对求解的问题理解不正确或算法不正确引起的,它们很难查找。 查找程序中的错误,诊断其准确位置,并予以改正,这就是程序调试。程序调试分为人工查错与机器调试。 gdb主要帮助用户在调试程序时完成四方面的工作: (1)启动程序,可以按用户要求影响程序的运行行为。 (2)使运行程序在指定条件处停止。 (3)当程序停止时,检查它出现了
原创力文档

文档评论(0)