单目录下多文件 makefile编写
来源:互联网 发布:知有陈迹而不知有今务 编辑:程序博客网 时间:2024/06/08 17:40
makefile很久就接触过了,但是一直没怎么深入的去学习和总结;在项目中我也只是看看makefile或者修改部分语句,全部自己动手写的话还真没有;知识在于沉淀,这句说的非常好,所以现在把自己理解的东西,记录下来,以便后面查阅;
这篇blog要分享的是在单目录下多文件的makefile编写,首先说明当前目录下有多少文件:fun.h fun.c main.c makefile;其中*.c 文件都要依赖 *.h文件;
首先常规编译:
预处理期:gcc -E -o fun.i fun.c
编译阶段:gcc -S -o fun.s fun.i
汇编阶段: gcc -c -o fun.o fun.s
链接阶段:gcc -o main fun.o main.o
这就是gcc的各个编译阶段(头文件在当前目录下,会直接搜索到),下面用makefile来编译下;
第一版的makefile:
CC = gcc CFLAGS = -g -Wall objects = main.o fun.o main:main.o fun.o $(CC) -o main main.o fun.o main.o:main.c $(CC) $(CFLAGS) -c main.c -o main.o fun.o:fun.c $(CC) $(CFLAGS) -c fun.c -o fun.o clean: rm -rf $(objects) main
比如:fun.o:fun.c
$(CC) $(CFLAGS) -c fun.c -o fun.o
当已知目的文件为 fun.o时,makefile会自动推导出依赖文件为fun.c并且编译规则也会自动推导,所以只需要注明依赖的头文件就可以;可以利用makefile自动推导特点简化为:fun.o:fun.h就可以了;
第二版makefile
CC = gcc CFLAGS = -g -Wall objects = main.o fun.o main:$(objects) $(CC) -o main $(objects) main.o:fun.h fun.o:fun.h clean: rm -rf $(objects) main
CC = gcc CFLAGS = -g -Wall objects = main.o fun.o main:$(objects) #$(objects):fun.h //可以有,也可以没有 .PHONY:clean clean: rm -rf $(objects) main其中.PHONY是用来说明后面的名称不是一个文件,主要用来区分同名文件(如果有一个文件名为clean文件,那么clean:下的规则就会无效);
转载请注明作者和原文出处,原文地址:http://blog.csdn.net/yuzhihui_no1/article/details/44808441
若有不正确之处,望大家指正,共同学习!谢谢!!!
- 单目录下多文件 makefile编写
- 多目录下多文件 makefile编写
- makefile编写小结:多目录,单Makefile
- 多文件及多目录下MakeFile文件的编写
- makefile编写小结:多目录,单Makefile(改进)
- 多文件多目录 Makefile文件编写
- Linux下多目录的Makefile编写
- 多目录下,单makefile文档编程
- 单文件夹下的C程序如何编写Makefile文件
- 多目录Makefile编写
- 多文件多目录的Makefile文件编写
- linux 下 多文件 Makefile 编写
- 多文件、多目录的Makefile的编写
- Linux下编写makefile文件
- Linux下Makefile文件编写
- 多层目录编译的makefile文件编写
- 多个文件目录下Makefile的写法
- 多个文件目录下Makefile的写法
- C/C++使用ODBC连接Microsoft SQL server数据库
- 自定义类加载器卸载后重新加载类 static 再次调用
- R软件中排序:sort(),rank(),order()
- arcgis10.1安装 desktop server sde安装网址
- 编程思想-复用类
- 单目录下多文件 makefile编写
- leetcode:Rotate Array
- 深入理解JVM____JVM运行时内存结构
- 从send函数和sendto函数参数的不同看TCP和UDP的差别
- RMQ 问题之Sparse_Table算法
- 二分查找
- Android中对Log日志文件的分析
- scanf函数学习
- 利用UDX进行P2P文件传输,UDP可靠文件传输