Linux工程管理器——make
一、定义
工程管理器,顾名思义,是指管理较多的文件
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工程管理器——make的更多相关文章
- make工程管理器
1.概述 大型程序中,人们希望工具自动识别修改的文件,而且不需要输入冗长的命令,就可以进行编译链接等操作,于是make工程管理器应运而生. make可以自动识别文件时间戳,只处理修改的文件: make ...
- 免费的 Linux 分区管理器使用介绍
下面的列表没有特定的排名顺序.大多数分区工具应该存在于 Linux 发行版的仓库中. GParted 这可能是 Linux 发行版中最流行的基于 GUI 的分区管理器.你可能已在某些发行版中预装它.如 ...
- Linux包管理器
按Linux系统分类 Redhat系列:Redhat(本身就是Centos).Centos.Fedora等,采用Dpkg包管理器 Debian系列:Debian.Ubuntu等,使用RPM包管理器 R ...
- Linux软件管理器(如何使用软件管理器来管理软件)
我们的Linux系统大部分都是某个Linux厂商的系统,所以这些厂商可以编译好一些软件来提供用户下载,用户下载完了之后就可以直接安装,从而省去了编译源码及其过程中的各种问题.这时我们就可以使用相应的软 ...
- Linux 分区管理器
下面的列表没有特定的排名顺序.大多数分区工具应该存在于 Linux 发行版的仓库中. GParted 这可能是 Linux 发行版中最流行的基于 GUI 的分区管理器.你可能已在某些发行版中预装它.如 ...
- Linux—软件包管理器yum安装详解
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 基於RPM包管理,能够从指定的服务器自动下载RPM包 ...
- Linux 包管理器
RPM: rpm(Red-Hat Package Manager) 为 Redhat 提出的包管理器, 用于在 Redhat 及其衍生版本中安装 rpm 格式的软件包 rpm 的优点: 1.简化了源码 ...
- Makefile工程管理器及万能模板
Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员.在 Linux(unix )环境下使用GNU 的m ...
- linux工程管理工具make入门
一.make工具的功能 1.主要负责一个软件工程中多个源代码的自动编译工作 2.还能进行环境检测.后期处理等工作: 3.make工具可以识别出工程中哪些文件已经被修改,并且在再次编译的时候只编译这些文 ...
随机推荐
- Git Git 已被其他开发删除的远程分支,本地依旧显示,如何删除?
- java List<String>的初始化 的一个小问题
今天在处理生成excel的时候用到了java的list,但是需要直接赋值固定的几个变量,如果先初始化然后add的方法: List<String> name = new ArrayList( ...
- Android笔记(六) Android中的组件
一个软件可以吸引到用户,除了优秀的功能可以解决用户的问题之外,良好的用户界面也并不可少.一个软件的功能不管多么优秀,但是没有提供友好的界面来让用户操作,将很难吸引到最终用户. Android提供了大量 ...
- Linux 之 文件
文件名称 在linux中,windows概念中的文件夹和文件是没有区别的,都是统称为文件. 1.Linux中文件的名称大小写是敏感的 2.名称最多可以为255个字符 3.除了正斜线以外,都是有效字符 ...
- 关于Django auth注册登录模块的具体使用
from django.urls import path from . import views urlpatterns = [ #主页,用来显示类别等其他数据 path('',views.index ...
- 写Django项目的开发工具或者编辑器
pycharm是写django的最好的编辑器,优先使用pycharm.到官网下载pycharm →https://www.jetbrains.com/pycharm/download→ pycharm ...
- 【python cookbook】找出序列中出现次数最多的元素
问题 <Python Cookbook>中有这么一个问题,给定一个序列,找出该序列出现次数最多的元素.例如: words = [ 'look', 'into', 'my', 'eyes', ...
- 解决服务器openssh漏洞
解决服务器openssh漏洞 发表于 2019 年 11 月 27 日 1. 检查升级 下载7.4p1 ,链接如下 http://www.openssh.com/portable.html 2.安 ...
- 重新编程Hexiwear Docking Station扩展坞
Hexiwear扩展坞(Docking Station)有一个很不错的功能:它板载了一个调试电路(OpenSDA). 这样我就不需要一个外部调试器来调试Hexiwear. 但是,重新编程扩展坞自身需要 ...
- maya pymel cmds ls 列出未知节点 unknown nodes
maya pymel cmds ls 列出未知节点 unknown nodes cmds.ls(type = 'unknown',fl = 1)