makefile示例(添加依赖、编译参数)

makefile示例

 

 上图依赖只有.c,当.h文件修改后,make时不会重新生成test,故此Makefile存在问题

 

上图,添加依赖,make,重新生成了test,但,源文件中包含了很多的头文件,如何管理起来呢? 

a. 改进:支持头文件依赖
  gcc怎么生成依赖
  gcc -M c.c 打印出来
  gcc -M -MF c.d c.c 把依赖存放在c.d中
  gcc -c -o c.o c.c -MD -MF c.d 编译出c.o,并把依赖放入c.d中

 

上图仅仅添加了 一个文件c.o:c.c c.h 依赖关系,若有多个文件依赖关系怎么管理呢?见下图

 

 dep_files = $(patsubst %, .%.d, $(objs))      #对文字进行了修改,dep_files值是.a.o.d  .b.o.d  .c.o.d

 第一次执行make时,dep_files值其实是空的,其实并没什么关系,还记的要解决的问题是什么吗,是头文件依赖关系。再在执行make时,dep_files值不为空了,故修改头文件后,对应的源文件和目标文件会被更新!

遇到的问题

    no rule to make target '/usr/lib/gcc/x86 64-linux-gnu/5/include/stddef.h', needed by 'a.o'.stop   原因是不知道了,把产生的中间文件清理后,得以解决(make clean   make distclean)

编译之前make clean,是个好习惯



b. 添加CFLAGS(不是来自Makefile,而是来自gcc)
  编译参数
  例如:把警告当成错误 -Werror
  指定头文件目录 -I.

 

上图是添加编译选项

 

 

 上图是指定头文件目录



c. 分析裸板Makefile
  之前讲到过的内容:通用字符、变量、函数

-----------------------------------------------------------------------------------

%起到匹配任意长度字符作用(跟通配符(%  *)区分)

 

posted @ 2022-01-02 09:08  我爱茜茜公主  阅读(312)  评论(0)    收藏  举报