一、定义

工程管理器,顾名思义,是指管理较多的文件

Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作 。

二、使用命令简介

makefile是make读入的惟一配置文件,因此本节的内容实际就是讲述makefile的编写规则。在一个makefile中通常包含如下内容:

a.需要由make工具创建的目标体(target),                 通常是目标文件或可执行文件;

b.要创建的目标体所依赖的文件;

创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键)开头

格式如下:

target:denpendcy_files

command /* 该行必须以Tab键开头 */

如:

hello.o: hello.c hello.h

gcc -c hello.c -o hello.o

接着在终端执行make hello.o命令,make将自动执行gcc -c hello.c -o hello.o,生成hello.o文件

3.makefile变量

(1)在makefile中的变量定义有两种方式:一种是递归展开方式,另一种是简单方式

1)递归展开方式:VAR=var

递归展开方式定义的变量是在引用该变量时进行替换的,即如果该变量包含对其他变量的引用,则在引用该变量时一次性将内嵌的变量全部展开。但是它也有严重的缺点,如不能在变量后追加内容(因为语句:CFLAGS=$(CFLAGS)-O在变量扩展过程中可能导致无穷循环)。

例如:

OBJS =kang.o yul.o

CC=gcc

CFLAGS=  -Wall  -O  -g

david : $(OBJS)

$(CC)  $(OBJS)-o david

kang.o : kang.c kang.h

$(CC)  $(CFLAGS)-c  kang.c  -o  kang.o

yul.o : yul.c yul.h

$(CC)  $(CFLAGS)-c  yul.c  -o  yul

2)简单扩展方式:VAR:=var

简单扩展方式变量的值在定义处展开,并且只展开一次,因此它不包含对其他变量的引用,从而消除变量的嵌套引用。

(2)makefile中的变量分为用户自定义、预定义变量、自动变量和环境变量

1)预定义变量包含了常见编译器、汇编器的名称及其编译选项

2)自动变量

linux的工程管理器是,Linux工程管理器——make相关推荐

  1. Linux命令之 DNF -- 新一代的 RPM 软件包管理器

    文章目录 一.命令介绍 二.安装 DNF 三.DNF 命令 (一)主要命令 1. 安装.升级和删除软件包 2. 查询和检查软件包 3. 执行其它功能 (二)插件命令 四.选项参数 五.命令示例 (一) ...

  2. 【SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动

    参考教程中的以下章节: 小知识点: hps_0.h 文件是qsys生成的FPGA侧外设 0xfc00 0000~0xffff ffff一共是0xffffffff - 0xfc000000 + 1 = ...

  3. Linux更改显示管理器,聊聊Linux操作系统中的显示管理器及如何更换

    在这篇Linux黑话解释中,你将了解 Linux 中的显示管理器.它是桌面环境的一部分吗?它的作用是什么? 什么是 Linux 中的显示管理器? 简单来说,显示管理器display manager(D ...

  4. Linux 命令之 yum -- 基于 RPM 的软件包管理器

    文章目录 一.命令介绍 二.选项参数 选项 参数 三.配置文件 四.参考示例 (一)安装.升级和删除包 安装指定的软件包 强制重新安装 本地安装指定软件包 本地更新指定软件包 安装 yum 服务器中的 ...

  5. linux下svn(subversion)服务端添加工程及配置权限

    linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...

  6. Vivado工程配置petalinux实现linux下网卡驱动

    0.说明 基于Vivado工程配置petalinux实现linux下控制PL端GPIO 完成对linux网卡的驱动 实验内容: 完成一个vivado工程,导出硬件信息 创建petalinux工程,导入 ...

  7. Linux进程调度器概述--Linux进程的管理与调度(十五)

    日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 ...

  8. Java工程打包部署到linux服务器整个过程

    本次分享是Java工程打包部署到linux服务器整个过程,包括在服务器上jar包启停的一些经验分享. 操作环境 下面是对已经完成的Java工程打包上传,启停步骤分享. 1.在项目工程中使用Maven的 ...

  9. linux架设DNF服务器,使用linux的dnf命令新一代的RPM软件包管理器

    使用linux的dnf命令新一代的RPM软件包管理器 发布时间:2020-07-08 11:00:25 来源:亿速云 阅读:131 作者:清晨 栏目:服务器 这篇文章将为大家详细讲解有关使用linux ...

  10. Linux进程核心调度器之主调度器schedule--Linux进程的管理与调度(十九)

    日期 内核版本 架构 作者 GitHub CSDN 2016-06-30 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 ...

最新文章

  1. How to use kingshard building a MySQL cluster
  2. 行星齿轮设计手册_合理选用行星齿轮传动装置的侧隙
  3. 如何配置charles_抓包工具--charles(青花瓷)及获取AppStore数据包
  4. module.js:549 throw err;
  5. Hadoop小知识点
  6. django 模板两次for循环_Django模板之基本的 for 循环 和 List内容的显示方式
  7. linux ortp 编译,Linux下oSIP的编译使用应该是很简单的,其Install说明文档.doc
  8. java函数改变参数值_Java函数参数值正在改变
  9. Android 系统javadoc符 注释/**@hide*/
  10. Android中为APP创建快捷方式的原理(自己的理解)
  11. Openvswitch手册(2): OpenFlow Controller
  12. 极性大小判断技巧_别愣着了,来分析分析正极性半波整流电路!
  13. 水仙花数c语言程序vb,VB编程:求水仙花数
  14. XP系统装python
  15. 谷歌翻译停服后,chrome无法自动翻译?解决办法来了~
  16. 为地图marker 设置网络图片
  17. 打印机模拟(灰度篇)
  18. 《诗经·王风·黍离》
  19. 计算机的删除快捷键,电脑删除的快捷键是什么
  20. 苹果显示itunes store无法连接服务器,ipad无法连接itunes store的图文解决办法

热门文章

  1. jQuery Mobile中固定工具栏header、footer的data-*选项
  2. 过程定义伪指令proc和宏命令伪指令macro
  3. 可以看下是什么问题吗
  4. Keras源码下载记录
  5. JSP的优势与劣势浅析
  6. 杭电1874————单源最短路径(dijkstra)
  7. redis 在windows 下的安装和使用
  8. 强名称(3)强名称的脆弱性
  9. ASP.NET刷新页面的六种方法(转) 包括在跳转的时候使用提示
  10. [转载] [Python] np.ones_like(ndarray)和np.zeros_like(ndarray)