Linux下的Makefile(一)
来源:互联网 发布:证券开户数据 编辑:程序博客网 时间:2024/05/17 08:28
Linux下的Makefile(一)
关于程序编译和链接
在UNIX下,把源文件进行编译生成 .o文件,即Object File,然后把大量的ObjectFile合成执行文件,这个动作叫做链接。
编译
编译需要的是语法正确,含税变量的声明正确。
链接
链接需要告诉编译器你的头文件所在的位置。连接时,主要是了解函数和全局变量。
库文件
大多数时候,由于源文件太多,连接时需要明显的指出中间目标文件名,所以我们会给中间目标文件打个包,UNIX下是Archive File,也就是 .a文件(Windows下是 .lib文件,即库文件)
Makefile描述整个工程的编译,链接规则,其中包括,工程中哪些文件需要编译,及如何编译,需要创建哪些库文件及如何创建这些库文件,如何组后生成我们想要的文件。
target也就是一个目标文件,可以说Object File,也可以是执行文件,格式为 target:main.o stack.o
变量
赋值
objects = main.o kbd.o command.o disolay.o\
insert.o search.o files.o utils.o (\代表换行)
使用变量
target:$(objects)
有新的 .o文件加入,只需要简单地修改一下objects变量就可以了。
make的自动推导
GUN的make很强大,他可以自动推导文件以及文件依赖关系后面的命令,所以,我们不用在每个.o文件后面加上编译命令。如果make找到一个whatever.o,那么whatever.c就会使whatever.o的依赖文件。并且gcc -c whatever.c 也会被推导出来
例如
target:
main.o:defs.h
disapaly.o:defs.h buffer.h(自动推导)
通过make的自动推导功能,可以将大量头文件收拢起来,make会自动识别依赖关系
例:
objects = main.o kbd.o command.o display.o\
insert.o search.o files.o utils.o
target:
$(objects):defs.h\
kbd.o command.o files.o : command.h
display.o insert.o search.o files.o : buffer.h
清空目标文件的规则
.PHONY:clean
clean:
-rm *.o -rf
每条命令的开头必须是一个tab
- Linux 下的Makefile(一)
- Linux下的Makefile(一)
- Linux环境下的make和Makefile 详解(一)
- Linux下makefile教程(一)
- Linux下makefile教程(一)
- Linux下makefile教程(一)
- linux下Makefile详解(一)
- linux下makefile的
- Linux下的Makefile
- Linux Makefile的编写 (一)
- linux内核模块的makefile (下)
- linux下的Makefile详解(1)
- linux下的Makefile详解(2)
- linux下的Makefile详解(3)
- linux下的Makefile详解(4)
- linux下的Makefile详解(5)
- linux下的Makefile详解(6)
- linux下的Makefile详解(7)
- [WerKeyTom_FTD的模拟赛]记忆的轮廓
- 【Oracle】输出和输入
- TIMIT数据集介绍
- Python中对文件夹下的特定格式图像全部读取并转化为数组保存(也可转化为txt文件)
- libuv-v1.9.0版本windows平台上的编译(生成visual studio能打开的工程)
- Linux下的Makefile(一)
- (Caffe,LeNet)IDE单步调试(一)
- Android入门之json解析
- Android常见面试题
- hrbust 1797 Fly【Tarjan强连通+缩点染色+最长路SPFA】好题~
- Android产品研发(十七)-->Hybrid开发
- CSS布局中居中(水平/垂直/水平垂直)问题的总结
- JavaScript中你所不知道的数组ArrayBuffer
- [LeetCode]Sort Colors