苏嵌 项目实战
学习日志 姓名:周文东 日期:7月11日
|
|
今日学习任务
|
1.了解调试器gdb;(基本调试操作,段错误如何调试) 2.了解项目管理的方法及重要性;(项目代码目录结构) 3.熟练掌握makefile基本语法的使用;(目标、依赖、命令) 4.企业级makefile的编丐;(迭代开发) 5.了解git/github的使用;(学会管理代码) |
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) |
其中第4点和第5点不作要求,自学。 第1点我已经熟练地掌握了,创建一个源文件test.c,1.gcc -g test.c -o test2.gdb test,然后在里面输入run,list,break,infobreak,delete,next等指令。 第2点也详细了解了项目管理的方法和重要性。 第3点我也基本熟练掌握makefilejiben语法使用,makefile三要素:目标体,依赖体,命令。了解使用总控的Makefile,子目录下的Makefile,scripts目录下的Makefile。 |
今日开发中出现的问题汇总
|
我在进行调试器gdb段错误调试中遇到了一些问题,产生段错误,没有权限。 之后,我先利用gdb逐步查找段错误,通过对文件进行调试,段错误时启动调试程序,我上网查了一下,用backtrace和objdump分析,最终解决了问题。 |
今日未解决问题
|
对于makefile语法还没有完全熟练,看makefile代码还没完全搞懂,所以要多加练习。 |
今日开发收获 |
今天主要学习了调试器gdb和makefile语法的使用,用makefile编译会更快更准确,学到基本的linux操作系统精髓的东西。 |
自我评价
(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)
|
基本完成既定任务,同时坐我旁边的同学也帮助我很多,我们也是共同进步,继续完善。 |
其他
|
无 |
scripts的Makefile
1 CC := gcc
2 CFLAGS := -Wall -O3
3 Libs = -lpthread
4 Target := client
5 Source := $(wildcard src/*.c)
6 Objs := $(patsubst %.c,%.o,$(Source))
7 Modules += add sub mul div main
8 AllObjs := $(addsuffix /src/*.o,$(Modules))
主控Makefile
1 include scripts/Makefile
2
3 modules_make = $(MAKE) -C $(1);
4 modules_clean = $(MAKE) clean -C $(1);
5
6 .PHONY: all mm mc clean
7
8 all: $(Target)
9
10 mm:
11 @ $(foreach n,$(Modules),$(call modules_make,$(n)))
12 mc:
13 @ $(foreach n,$(Modules),$(call modules_clean,$(n)))
14
15 $(Target) : mm
16 $(CC) $(CFLAGS) -o $(Target) $(AllObjs) $(Libs)
17 @ echo $(Target) make done!
18
19 clean : mc
20 rm -rf $(Target)
子目录Makefile
1 include ../scripts/Makefile
2
3 all : $(Objs)
4
5 clean :
6 rm -rf $(Objs)
子目录为加减乘除的简单函数;
主函数为输出一组加减乘除值
文件排布:
.
|-- Makefile
|-- add
| |-- Makefile
| `-- src
| |-- add.c
| `-- add.o
|-- client
|-- div
| |-- Makefile
| `-- src
| |-- div.c
| `-- div.o
|-- main
| |-- Makefile
| `-- src
| |-- main.c
| `-- main.o
|-- mul
| |-- Makefile
| `-- src
| |-- mul.c
| `-- mul.o
|-- scripts
| `-- Makefile
`-- sub
|-- Makefile
`-- src
|-- sub.c
`-- sub.o