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 或 --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的工程化编译工具相关推荐
- GNU gcc的编译工具用法(转)
对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧. 一.GNU gcc的编译工具用 ...
- 5 个基于Linux命令行的文件下载和网站浏览工具
Linux命令行是GNU/Linux中最神奇迷人的部分,它是非常强大的工具.命令行本身功能多样,多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大.Linux Shell支持多种不同类型的 ...
- 我使用过的Linux命令之curl - 强大的网络传输工具
我使用过的Linux命令之curl - 强大的网络传输工具 http://codingstandards.iteye.com/blog/807844 博客分类: Linux命令 LinuxTomcat ...
- Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析
在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析. 最近才发现,原来wire ...
- 从事UNIX/LInux服务器编程最方便的代码编译工具------(eclipse for c/c++)、(FileZilla)、(Secure CRT) 这三种一定要一起使用 之3...
这篇博文主要是安装eclipse for c/c++.同时也让我感受到eclipse工具的强大,尽然也支持c++,虽然在linux编程中仅仅起到编码的作用但是功能不容小觑. 下面进行eclipse f ...
- Linux 命令之 grep -- 强大的文本搜索工具/正则表达式搜索
文章目录 一.命令介绍 二.grep 的三种形式 三.常用选项 四.正则表达式 五.参考示例 在指定的文件中查找指定的关键词 查看指定文件中含有特定关键词的文本行 查看指定文件中所有包含数字的行 在指 ...
- Linux 命令之 rpm -- RPM 软件包的管理工具
文章目录 一.命令介绍 二.语法结构 三.常用选项 用于查询和检查包 用于安装.升级和删除包 用于执行其他功能 四.命令示例 (一)查询和检查包 1. 查看一个已安装包的信息(版本.用途等) 2. 查 ...
- Linux 命令 —— iostat I/O 和 CPU 监视工具
iostat 用于监控统计系统输入输出设备和 CPU 的使用情况,英文 I/O statistics 的缩写. 它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况.同 vmstat 一样 ...
- plink执行linux命令网络异常,Shell中使用plink工具实现远程批量关机
我的操作系统是centos6.4 操作系统:rhel 6.2 x86_64 下载并安装putty软件包,本人下载了putty-0.62-1.el6.rf.x86_64.rpm 下载地址如下:http: ...
最新文章
- 20 个 Pandas 数据实战案例,干货多多
- 如果修改postgresql的最大连接数
- apache 已经加载模块,但是不能解析出开发的rewrite模块功能
- ThinkPHP集成万象优图
- tomcat与apache区别
- 干活|常见WAF拦截页面总结
- [UE4] Pawn 移动时没有碰撞的解决办法:使用 AddActorWorldOffset 并勾选 Sweep
- MTKP60 vs MSM 660
- 会声会影2018,带你体验不一样的光影世界!
- 【语音识别】基于支持向量机SVM实现脑电信号分期睡眠监测matlab 源码
- python中素数怎么判断_python怎么判断素数
- RestTemplate 下载文件
- C语言学习书籍推荐《明解C语言》下载
- 前端如何设置浏览器窗口的网站logo
- 辉太郎看前端(for...in和for...of)
- linux对外开放端口号
- html 动画制作工具,html5动画制作10大工具介绍
- docker 安装mysql、canal、redis实现redis和mysql缓存一致性
- #爬取豆瓣电影top250
- ftl模板生成的word文档打不开
热门文章
- apache poi_将HTML转换为Apache POI的RichTextString
- jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用
- javafx html5_JavaFX技巧5:可观察
- Java和JavaScript之间的区别
- Java equals()和hashCode()
- Jenkins在AWS上(第1部分)
- 容器化Spring Data Cassandra应用程序
- Java 11功能– Java飞行记录器
- Spring启动教程
- executor线程池框架_如何使用Java 5 Executor框架创建线程池