苏嵌//嵌入式学习笔记

 

今日学习任务

 

1、了解项目管理的方法及重要性;(项目代码目录结构)

2、熟练掌握 makefile 基本语法的使用;(目标、依赖、命令)

3、企业级 makefile 的编写;(迭代开发)

4、了解 git/github 的使用;(学会管理码)


今日任务完成情况

(详细说明本日任务是否按计划完成,开发的代码量)

 

今日任务基本完成,达到老师要求,学会了工程建立工程的基本方法,并学会了gcc编译工程,makefile脚本语言的编写,以及gdb调试

今日开发中出现的问题汇总

反编译 list 显示代码不全

今日未解决问题

今日开发收获

 学会了gcc和gdb的基本使用

自我评

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

 
其他  

GDB调试器特点 :运行程序和被调程序,可以查看变量值

命令;gcc -g

错误分类     编译时错误(语法错误)
                  运行时错误(内存错误、总线错误)

工程管理器  make
依靠makefile的内容来编译工程
makefile脚本语法规则(三要素:目标体、依赖体、命令)
    格式       目标体:依赖体
                  tab键+命令

指令复习
mv add.c add   将add.c文件放到add目录下
tree     树型图显示文件及目录

三类makefile:

子目录下的makefile:将目录下的。.c文件编译成.o文件
总控的makefile:将各个子目录下的.o文件链接生成可执行文件
scripts目录下的Makefile:相当于C中的头文件,定义了一些变量

总控makefile模板

include scripts/Makefile

modules_make = $(MAKE) -C $(1);
modules_clean = $(MAKE) clean -C $(1);

.PHONY: all mm mc clean

all: $(Target)

mm:
	@ $(foreach n,$(Modules),$(call modules_make,$(n)))
mc:
	@ $(foreach n,$(Modules),$(call modules_clean,$(n)))

$(Target) : mm
	$(CC) $(CFLAGS) -o $(Target) $(AllObjs) $(Libs)
	@ echo $(Target) make done!

clean : mc
	rm -rf $(Target)
	@ echo clean done!

子目录makefile模板

include ../scripts/Makefile

all : $(Objs)

clean : 
	rm -rf $(Objs)

scripts文件模板

CC := gcc
CFLAGS := -Wall -O3
Libs = -lpthread
Target := client
Source := $(wildcard src/*.c)
Objs := $(patsubst %.c,%.o,$(Source))
Modules += main add sub mul div
AllObjs := $(addsuffix /src/*.o,$(Modules))

猜你喜欢

转载自blog.csdn.net/weixin_40742042/article/details/81006341