LINUX中的make
来源:互联网 发布:云存储解决方案 知乎 编辑:程序博客网 时间:2024/06/14 12:54
make工作原理
make是一个工具,主要负责一个软件工程中多个源代码的自动编译工作,还能进行环境检测、后期处理等工作。
make的主要任务是根据makefile文件(一个脚本文件,类似windows下的bat文件)中定义的规则和步骤,根据各个模块的更新情况,自动完成整个软件项目的维护和目标程序生成工作。
make工具可以识别出工程中哪些文件已经被修改,并且在再次编译的时候只编译这些文件,从而提高编译的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,大多数IDE中都有这个命令,比如Delphi中的make,Visual C++的nmake,LINUX下GNU的make,make是一种工程方面的编译方法。
make按照makefile脚本对整个项目的各个文件分别进行编译、链接,也可以把如何产生文档(如manual page,info档及dvi档)以及打包压缩都完成。
make和gcc相比:
1、gcc是编译一个文件,make是编译多个源文件的工程文件的工具
2、make可以说是一个批处理程序,它根据makefile脚本自动编译多个脚本,make是运用gcc去编译文件的。
makefile基本就是:目标(target)、关联(dependencies)和动作三者所组成的脚本。makefile文件是许多编译器,包括Windows NT下的编译器,维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改makefile文件而已。
makefile文件
makefile文件告诉make该做什么、怎么做
make工具会在当前目录下寻找名为“Makefile”或“makefile”的文件并解释执行其中的指令。
makefile主要包含了:
- 一系列规则(显示规则、隐式规则、模式规则)
- 变量定义
- 文件指示(指示包含其他makefile文件,或根据情况指定makefile文件中的有效部分)
规则:
一条规则包含3个方面的内容:
1. 要创建的目标(文件)
2. 创建目标(文件)所依赖的文件列表
3. 通过依赖文件创建目标文件的命令组
规则的一般形式:
target …:prerequisites …
< tab>command
< tab>…
< tab>…
备注:prerequisites:预备知识、先决条件;
举例说明:
test:test.c
gcc -o test test.c
规则包括:显式规则、隐式规则、模式规则
隐式规则,由make工具自动推导由依赖文件生成目标文件的规则
模式规则,由make工具根据模板自动推导由依赖文件生成目标文件的规则
变量:
变量可以指代一个长的字符串,使用变量可以降低错误风险、简化makefile。
变量分为:简单变量、递归变量、自动变量
举例说明:objects变量($(objects))
objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.oedit: $(objects) cc -o edit $(objects)
简单的Makefile:
OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $(OBJS) -o davidkang.o : kang.c kang.h $(CC) $(CFLAGS) -c kang.c -o kang.oyul.o : yul.c yul.h $(CC) $(CFLAGS) -c yul.c -o yul.o
有一个简单的makefile(自动变量):
OBJS = kang.o yul.oCC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $^ -o $@kang.o : kang.c kang.h $(CC) $(CFLAGS) -c $< -o $@yul.o : yul.c yul.h $(CC) $(CFLAGS) -c $< -o $@
- Linux中的 make config, make menuconfig, make oldconfig, make xx_defconfig
- LINUX中的make
- Linux中的Make工具
- Linux中的./configure,make,make install解析
- linux中的configure, make了解
- Linux中的make和makefile
- linux中的Make使用模板
- linux中的‘make’和‘makefile’
- Linux中的configure和make
- linux 中的编译指令make 和make clean
- linux中的make命令解释集锦
- Linux中的命令 make -f 是什么意思
- make linux
- linux make
- linux make
- [linux] make
- Linux make
- linux make
- AndroidStudio混淆打包Library需要注意的问题
- explicit 显示转换 (不允许隐式转换)
- 超精简vc++6.0配置OPENGL
- linux 配置Tomcat开机启动
- Objective-C的initialize和init
- LINUX中的make
- iOS应用程序状态切换相关
- dedecms修改default目录办法
- Type interface com.binarysoft.service.region.RegionDAO is not known to the MapperRegistry.
- AllegroGraph Virtual Machine 安装教程
- Oracle 程序控制结构
- xgboost ppt(4)--总结
- EditTex隐藏、可编辑等状态
- UE4学习6 Collision设置