如何通过自动生成的makefile 看各个文件的依赖关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过自动生成的makefile 看各个文件的依赖关系相关的知识,希望对你有一定的参考价值。
参考技术A 这位朋友我看是有点误解了makefile的做用。makefile 是一个脚本,由他来控制编译出的程序的版本。当你改写了原文件后,通过makefile 来检查依赖关系,来生成最终的文件。比如一个程序叫a 他的源码叫a.c a.c 又用到头文件a.h ,a.h是1.h和2.h生成的 如果你改写了1.h,通过编写makefile文件。make时会调用makefile来依此按依赖关系生成最后的a 所以说编译时程序并不知道生成a都用到什么。怎么可能自己生成呢。 makefile是要你自己编写的,来告诉make来如何编译。make工具就相当于一个脚本。 参考技术B 目标,依赖,命令(规则),第一项目标,然后会有个:号,后面的就是依赖了 例如 hello.o : hello.c, a.o, b.o gcc hello.c hello.o hello.c, a.o,b.o就都是依赖,就这样本回答被提问者采纳Makefile使用
在Shell脚本中使用make命令来进行编译,尤其在C开发中,make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译;makefile文件是按照规定格式编写,需说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系;很多大型项目的编译都是通过 Makefile 来组织的。
首先查看是否安装了 make
make -v
出现:
GNU Make 4.1 Built for x86_64-pc-linux-gnu Copyright (C) 1988-2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
代表安装成功了。
清理一下.o文件:
rm *.o
然后打开Makefile 注意首字母要大写
vi Makefile
然后写入依赖关系
#this is make fike 代表注释内容 a.out:2.o 3.o 1.c #可执行文件:由哪些文件依赖 gcc 2.o 3.o 1.c -o main.out #执行gcc命令 一定要用编译器里的Tab否择会出错 2.o:2.c #目标代码文件:由.c文件生成 gcc -c 2.c 3.:3.c gcc -c 3.c
保存退出,执行make
dacui@ubuntu:~/Desktop/study$ make gcc -c 2.c cc -c -o 3.o 3.c gcc 2.o 3.o 1.c -o main.out
ls查看下文件
1.c 2.c 2.h 2.o 3.c 3.h 3.o a.out main.out Makefile
执行a.out /main.out
dacui@ubuntu:~/Desktop/study$ ./main.out num=:10 min=1 dacui@ubuntu:~/Desktop/study$ ./a.out num=:10 min=1
结果是一样的
以上是关于如何通过自动生成的makefile 看各个文件的依赖关系的主要内容,如果未能解决你的问题,请参考以下文章