文章目录

  • 一、命令介绍
  • 二、常用选项
  • 三、命令示例
    • (一)指定命令 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/

Linux 命令之 make -- GNU的工程化编译工具相关推荐

  1. GNU gcc的编译工具用法(转)

    对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧. 一.GNU gcc的编译工具用 ...

  2. 5 个基于Linux命令行的文件下载和网站浏览工具

    Linux命令行是GNU/Linux中最神奇迷人的部分,它是非常强大的工具.命令行本身功能多样,多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大.Linux Shell支持多种不同类型的 ...

  3. 我使用过的Linux命令之curl - 强大的网络传输工具

    我使用过的Linux命令之curl - 强大的网络传输工具 http://codingstandards.iteye.com/blog/807844 博客分类: Linux命令 LinuxTomcat ...

  4. Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析

    在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析. 最近才发现,原来wire ...

  5. 从事UNIX/LInux服务器编程最方便的代码编译工具------(eclipse for c/c++)、(FileZilla)、(Secure CRT) 这三种一定要一起使用 之3...

    这篇博文主要是安装eclipse for c/c++.同时也让我感受到eclipse工具的强大,尽然也支持c++,虽然在linux编程中仅仅起到编码的作用但是功能不容小觑. 下面进行eclipse f ...

  6. Linux 命令之 grep -- 强大的文本搜索工具/正则表达式搜索

    文章目录 一.命令介绍 二.grep 的三种形式 三.常用选项 四.正则表达式 五.参考示例 在指定的文件中查找指定的关键词 查看指定文件中含有特定关键词的文本行 查看指定文件中所有包含数字的行 在指 ...

  7. Linux 命令之 rpm -- RPM 软件包的管理工具

    文章目录 一.命令介绍 二.语法结构 三.常用选项 用于查询和检查包 用于安装.升级和删除包 用于执行其他功能 四.命令示例 (一)查询和检查包 1. 查看一个已安装包的信息(版本.用途等) 2. 查 ...

  8. Linux 命令 —— iostat I/O 和 CPU 监视工具

    iostat 用于监控统计系统输入输出设备和 CPU 的使用情况,英文 I/O statistics 的缩写. 它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况.同 vmstat 一样 ...

  9. plink执行linux命令网络异常,Shell中使用plink工具实现远程批量关机

    我的操作系统是centos6.4 操作系统:rhel 6.2 x86_64 下载并安装putty软件包,本人下载了putty-0.62-1.el6.rf.x86_64.rpm 下载地址如下:http: ...

最新文章

  1. 20 个 Pandas 数据实战案例,干货多多
  2. 如果修改postgresql的最大连接数
  3. apache 已经加载模块,但是不能解析出开发的rewrite模块功能
  4. ThinkPHP集成万象优图
  5. tomcat与apache区别
  6. 干活|常见WAF拦截页面总结
  7. [UE4] Pawn 移动时没有碰撞的解决办法:使用 AddActorWorldOffset 并勾选 Sweep
  8. MTKP60 vs MSM 660
  9. 会声会影2018,带你体验不一样的光影世界!
  10. 【语音识别】基于支持向量机SVM实现脑电信号分期睡眠监测matlab 源码
  11. python中素数怎么判断_python怎么判断素数
  12. RestTemplate 下载文件
  13. C语言学习书籍推荐《明解C语言》下载
  14. 前端如何设置浏览器窗口的网站logo
  15. 辉太郎看前端(for...in和for...of)
  16. linux对外开放端口号
  17. html 动画制作工具,html5动画制作10大工具介绍
  18. docker 安装mysql、canal、redis实现redis和mysql缓存一致性
  19. #爬取豆瓣电影top250
  20. ftl模板生成的word文档打不开

热门文章

  1. apache poi_将HTML转换为Apache POI的RichTextString
  2. jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用
  3. javafx html5_JavaFX技巧5:可观察
  4. Java和JavaScript之间的区别
  5. Java equals()和hashCode()
  6. Jenkins在AWS上(第1部分)
  7. 容器化Spring Data Cassandra应用程序
  8. Java 11功能– Java飞行记录器
  9. Spring启动教程
  10. executor线程池框架_如何使用Java 5 Executor框架创建线程池