makefile 《Linux程序设计笔记》
2016-03-03 16:09
447 查看
1、make工具重新编译所有受改动影响的源文件,而不是全部重新编译
2、make的选项和参数
3、makefile--依赖关系
prog1:prog1.outils.o
表示以来文件与源文件的依赖关系。写法:先写目标的名称,然后紧跟着一个冒号,接着是空格或者tab最后是空格或tab隔开的文件列表
依赖关系暗示着,要生成目标文件,首先得生成它所依赖的文件,如果依赖的文件没有生成,继续往makefile找,直到找到
4、makefile--规则
(1)必须以tab开头
(2)各行不能以空格结尾
5、makefile注释
以#开头
6、makefile--all
all作用:默认makefile是生成找到的第一个目标文件,但是使用All就可以生成多个目标文件
7、makefile--宏
(1)定义宏
可以在makefile定义,
VALUE=V
也可以在make命令输入,此时将覆盖文件中的宏定义。此时宏定义必须以单个参数传递,而且应该避免在宏定义中使用空格
(2)使用宏
8、makefile--特殊字符
-:执行这条命令的时候忽略错误。比较实用的用法是:-rm因为经常会出现rm的文件不存在
@:执行这条命令前不要将该命令显示在标准输出上,如果想用echo命令给出一些说明信息,这个字符很有用。
9、GNUmake和gcc
make命令的-jN N是数字,这个选项允许make同时执行N条命令,一般是可以从小的数字开始尝试,比如-j3
gcc的-MM选项,作用是产生一个适用于make命令的依赖关系清单。这样就可以抄了,,不用自己分析
比如
gcc会扫描源文件以查找include语句,然后以一种直接插入到makefile文件中个的格式输出需要的依赖关系清单。
只需要把这个输出结果保存到一个临时文件中,然后把它们插入到makefile中,即可得到一组完美的依赖关系规则。
2、make的选项和参数
选项 | 意义 |
-k | 使make命令在发现错误时继续执行 |
-n | 让make命令输出将要执行的操作而不是真正执行 |
-f<filename> | 默认使用当前目录的makefile 如果是加了-f,就是指定filename为使用的makefile |
all:prog1prog2prog3
.PHONY:all
prog1:prog1.outils.o
cc-oprog1prog1.outils.o
prog2:prog2.o
cc-oprog2prog2.o
prog3:prog3.osort.outils.o
cc-oprog3prog3.osort.outils.o
prog1:prog1.outils.o
表示以来文件与源文件的依赖关系。写法:先写目标的名称,然后紧跟着一个冒号,接着是空格或者tab最后是空格或tab隔开的文件列表
依赖关系暗示着,要生成目标文件,首先得生成它所依赖的文件,如果依赖的文件没有生成,继续往makefile找,直到找到
4、makefile--规则
(1)必须以tab开头
(2)各行不能以空格结尾
5、makefile注释
以#开头
6、makefile--all
all作用:默认makefile是生成找到的第一个目标文件,但是使用All就可以生成多个目标文件
最早先的一个例子中,我们提到过一个“clean”的目标,这是一个“伪目标”, |
(1)定义宏
可以在makefile定义,
VALUE=V
也可以在make命令输入,此时将覆盖文件中的宏定义。此时宏定义必须以单个参数传递,而且应该避免在宏定义中使用空格
makeVALUE=T
(2)使用宏
${VALUE}
8、makefile--特殊字符
-:执行这条命令的时候忽略错误。比较实用的用法是:-rm因为经常会出现rm的文件不存在
@:执行这条命令前不要将该命令显示在标准输出上,如果想用echo命令给出一些说明信息,这个字符很有用。
9、GNUmake和gcc
make命令的-jN N是数字,这个选项允许make同时执行N条命令,一般是可以从小的数字开始尝试,比如-j3
gcc的-MM选项,作用是产生一个适用于make命令的依赖关系清单。这样就可以抄了,,不用自己分析
比如
gcc-MMmain.c2.c3.c
gcc会扫描源文件以查找include语句,然后以一种直接插入到makefile文件中个的格式输出需要的依赖关系清单。
只需要把这个输出结果保存到一个临时文件中,然后把它们插入到makefile中,即可得到一组完美的依赖关系规则。
相关文章推荐
- linux平台使用multipath配置asm磁盘(multipath path)
- SetConsoleCtrlHandler
- Linux线程-互斥锁pthread_mutex_t
- 一个可以下载linux 内核升级包的网站
- linux 学习决心书
- 学习Linux决心书
- Linux中整理代码工具indent的使用
- 学习Linux决心计划书
- Linux mv 命令
- linux系统 用QT实现复制粘贴文件
- 解决CentOS 7出现Failed to issue method call: Unit iptables.service failed to load: No such file or direc
- Linux下cp命令 -f无效的解决方法
- Linux面试之进程地址空间
- ssh无法登录linux服务器的解决办法
- Centos安装编译环境
- Linux zip 加密压缩
- 学习linux决心书
- linux下安装hadoop
- 运维老鸟教你安装centos6.5如何选择安装包
- linux配置LAMP环境