Linux 命令之 make -- GNU的工程化编译工具

文章目录

  • 一、命令介绍
  • 二、常用选项
  • 三、命令示例
    • (一)指定命令 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--touchtouch 目标(更新修改时间)而不是重新制作它们
-p--print-data-base打印 make 的内部数据库
-qmake 操作将根据目标文件是否已经更新返回"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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SDL2笔记

SDL2基本操作头文件主函数初始化创建窗口窗口暂停以及事件讲解销毁窗口(释放指针)并退出加载bmp图片新加载图片的方法(使用渲染、纹理)加载其他格式的图片头文件 #include "SDL.h" #include "SDL_image.h"主函数 int main(int argc,char* argv[]) //一定…

操作系统时间片轮换_《操作系统_时间片轮转RR进程调度算法》

转自:https://blog.csdn.net/houchaoqun_xmu/article/details/55540250时间片轮转RR进程调度算法一、概念介绍和案例解析时间片轮转法 - 基本原理&#xff1a;在早期的时间片轮转法中&#xff0c;系统将所有的就绪进程按先来先服务的原则排成一个队列&#xff0c;每次调度时&am…

java ee打印功能_Java EE 8的前5个新功能

java ee打印功能备受期待的Java Enterprise Edition 8版本具有两个令人兴奋的新API&#xff08;JSON绑定1.0和Java EE Security 1.0&#xff09;&#xff0c;并且对当前API进行了改进&#xff08;JAX-RS 2.1&#xff0c;Bean Validation 2.0&#xff0c;JSF 2.3&#xff0c;CDI…

SDL2事件笔记

SDL2事件窗口关闭的事件&#xff1a;鼠标事件鼠标点击事件鼠标移动事件键盘事件用SDL_PollEvent(&event)来检测是否有事件&#xff0c;用SDL_Event的实例属性event.type来获取事件。 窗口关闭的事件&#xff1a; SDL_QUIT鼠标事件 鼠标点击事件 鼠标点击事件&#xff1…

什么是复数

我们把形如 zabi&#xff08;a、b均为实数&#xff09;的数称为复数。其中&#xff0c;a 称为实部&#xff0c;b 称为虚部&#xff0c;i 称为虚数单位。当 z 的虚部 b&#xff1d;0 时&#xff0c;则 z 为实数&#xff1b;当 z 的虚部 b≠0 时&#xff0c;实部 a&#xff1d;0 …

qnx 设备驱动开发_QNX驱动开发——应用层与resource manger交互 | 学步园

QNX操作系统是一个类Unix实时操作系统&#xff0c;遵从POSIX规范&#xff0c;驱动程序具有良好的可移植性。编写任何驱动程序都会遇到同样的一个问题&#xff1a;应用程序与驱动程序之间是如何进行交互的。其实这个问题很简单&#xff0c;QNX有大量资料说明这一点。当客户端调用…

spring api层打包_Spring项目的按层打包已过时

spring api层打包我认为Spring应用程序不应该以逐层方法构造。 在我看来&#xff0c;按功能打包更有意义。 首先&#xff0c;让我简要描述每种方法。 “按层打包”&#xff08;在非Java世界中为“按类型折叠”&#xff09; 该项目结构根据源代码文件所属的体系结构层将其分为…

C++ Primer(第五版)第七章 类 部分答案

第七章 类练习7.2练习7.3练习7.4练习7.6练习7.7练习7.9练习7.14、7.15、7.22练习7.23、7.24、7.26练习7.27练习7.2 曾在 2.6.2 节的练习&#xff08;第 76 页&#xff09;中编写了一个 Sales_data类&#xff0c;请向这个类添加 combine 和 isbn 成员。 创建头文件sales.h #ifn…

arpanet(阿帕网)

“阿帕”&#xff08;ARPA&#xff09;&#xff0c;是美国高级研究计划署&#xff08;Advanced Research Project Agency&#xff09;的简称。他的核心机构之一是信息处理技术办公室&#xff08;IPTO Information Processing Techniques Office&#xff09;&#xff0c;一直在关…

mongodb数据库淘汰_mongodb 内存数据淘汰策略

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼About MongoMongoDB uses memory mapped files.This means the the operating system essentially controls what is paged in and out of memory (to and from disk).The RulesIf your indexes working set exceed memory, the l…

Markdown常用转义字符

如果字符无法正常输出&#xff0c;则在前面加\试试。 空格&#xff1a; 数学公式 数学公式要使用$$&#xff0c;需将公式放在两个$中间。 下标: _上标: ^分数&#xff1a;方法1&#xff1a;\frac{分子}{分母} 方法2&#xff1a;分子 \over 分母 对于\frac的方法…

互联网工程任务组(IETF)

国际互联网工程任务组&#xff08;The Internet Engineering Task Force&#xff0c;简称 IETF&#xff09;是一个公开性质的大型民间国际团体&#xff0c;汇集了与互联网架构和互联网顺利运作相关的网络设计者、运营者、投资人和研究人员&#xff0c;并欢迎所有对此行业感兴趣…

javafx 打印控件_Java的新视差控件(JavaFX)

javafx 打印控件介绍 视差是一种视觉效果&#xff0c;您可以组合以不同速度移动的两个分层图像以获得深度感。 想想一下&#xff0c;当您在道路上行驶时&#xff0c;您会看到附近的树木在快速移动&#xff0c;而距离较远的树木将沿同一方向移动但速度较慢&#xff0c;结果是您…

beoplay耳机序列号查询_BOSE耳机序列号如何查询?

展开全部 大多数序列号可在产品的背面或底部找到,一般位于条形码旁。e69da5e6ba903231313335323631343130323136353331333431363532序列号长度为 17 位(还有一些耳机是 4 位),可包含字母和数字。 另外,与 Bose Connect 应用程序兼容的产品将在应用程序的设置和gt; 产品信息下…

编译原理总概述笔记

编译原理编译原理程序设计语言分类翻译编译解释编译的转换过程两阶段的转换三阶段的转换编译程序的工作词法分析语法分析中间代码生成优化目标代码生成表格与表格管理出错处理语句翻译实例过程编写编译程序方式编译原理 是介绍高级程序设计语言变换成计算机硬件所能识别的机器…

RFC(一系列以编号排定的文件)

Request For Comments&#xff08;RFC&#xff09;&#xff0c;是一系列以编号排定的文件。文件收集了有关互联网相关信息&#xff0c;以及UNIX和互联网社区的软件文件。RFC文件是由Internet Society&#xff08;ISOC&#xff09;赞助发行。基本的互联网通信协议都有在RFC文件内…

deprecated_使用Java的@Deprecated前瞻

deprecated我偶尔会遇到一种情况&#xff0c;我需要引入新的API或构造以供其他人试用&#xff0c;但是我知道在使用某些API后&#xff0c;它可能会根据其他人的反馈而改变。 在这种情况下&#xff0c;我想以某种方式注释该构造&#xff0c;以警告其他开发人员此新添加的构造的暂…

fusionsphere的核心组件_FusionSphere架构详解

FusionSphere架构详解关键字&#xff1a;云计算XEN Hypervisor FusionSphere摘要&#xff1a;本技术案例主要针对Huawei FusionSphere云计算软件架构进行深入分析&#xff0c;总结概括出我们的FusionSphere云计算产品技术及课程内容中的关键点&#xff0c;为产品技术学习和云计…

将py文件打包成exe可执行文件

使用pyinstaller库即可将py文件打包成exe文件 安装pyinstaller库 pip install pyinstaller将py文件打包成exe文件 1.首先进入cmd&#xff0c;用cd命令定位到要打包的py文件所在的文件夹 2.使用以下命令打包py文件 pyintaller -F xxx.py #xxx.py就是要打包的文件之后会生成…

文件的 MD5 签名介绍

在 RFC1321 中有 MD5 的详细描述。简单的说&#xff0c;MD5 根据文件的内容用算法产生一个唯一的128位签名&#xff0c;用任何方法改变文件都会导致签名改变。尽管人们一直在讨论修改文件后能保持签名不变的理论可能性&#xff0c;但截止到目前还没有人能够做到。所以在文件使用…