文章目录
- 一、命令介绍
- 二、常用选项
- 三、命令示例
- (一)指定命令 make 的工作目录
一、命令介绍
make 命令是 GNU 的工程化编译工具,用于编译众多相互关联的源代码文件,还可以编辑内核或模块,以实现工程化的管理,提高开发效率。
make 命令第一次执行时,它会扫描 Makefile 找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立其依赖关系,然后编译它们。一旦主依赖编译之后,然后就编译主目标。
无论是在 Linux 还是在 Unix 环境 中,make 都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到 make 或 make install。利用 make 工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用 make 和 makefile 工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。
而且如此多的源文件,如果每次都要键入 gcc 命令进行编译的话,那对程序员 来说简直就是一场灾难。而 make 工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。
因此,有效的利用 make 和 makefile 工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着 Linux 下的应用软件手足无措了。
二、常用选项
选项 | 说明 |
---|---|
-r | 禁用内置的隐含规则,禁止使用 build-in 规则 |
-B | 始终无条件make所有目标 |
-b | 忽略兼容性 |
-C<目录> 或 -c | 在读取 makefile 之前改变到指定的目录下 |
-L | 在符号链接和目标之间使用最后的修改时间 |
-n 或 --just-print | 只打印命令配方,不实际执行 |
-o<文件> | 不编译指定的文件 |
-e | 环境变量覆盖 makefile 中的变量 |
-d | 打印大量调试信息 |
-i | 忽略命令执行返回的出错信息 |
-w 或 --print-directory | 打印当前目录 |
--no-print-directory | 关闭 -w,即使 -w 默认开启 |
-t 或 --touch | touch 目标(更新修改时间)而不是重新制作它们 |
-p 或 --print-data-base | 打印 make 的内部数据库 |
-q | make 操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息 |
-R | 禁用内置变量设置 |
-s | 不回显命令。沉默模式,在执行之前不输出相应的命令行信息 |
-I<目录> | 在指定目录下搜索 makefile 文件 |
-f<文件> | 读取指定文件作为 makefile 文件 |
-k | 当有些目标不能 make 下去时,继续执行 |
--debug[=旗标] | 打印各种调试信息 |
-j [N] 或 --jobs[=N] | 同时允许 N 个任务;无参数表明允许无限个任务 |
-l [N] 或 --load-average[=N] 或 --max-load[=N] | 在系统负载高于 N 时不启动多任务 |
-S | 关闭 -k |
--warn-undefined-variables | 当引用未定义变量的时候发出警告 |
-W<文件> | 将 <文件> 当做最新 |
三、命令示例
(一)指定命令 make 的工作目录
将命令 make 的工作目录切换为目录 /linuxcool/:
[root@linuxcool ~]# make -C /linuxcool/