make

原创 2018年04月15日 12:01:54

make

对多文件构成的大中型软件项目进行编译、调试的工具

工作机制

有5个源文件
main.c
function1.h
function1.c
function2.h
function2.c

main.c

#include "function1.h"
#include "function2.h" 
int main(int argc, char **argv)
{
function1_print("hello");
function2_print("world");
    return 0;
}

function1.h

//function1.h 
#include<stdio.h>
void function1_print(char *str); 

function1.c

//function1.c 
#include "function1.h"
void function1_print(char *str)
{
printf("This is function1 print %s\n", str);
}

function2.h

//function2.h
#include<stdio.h>
void function2_print(char *str); 

function2.c

//function2.c 
#include "function2.h"
void function2_print(char *str)
{
printf("This is function2 print %s\n", str);
}

依赖关系图:

makefile文件:

main: main.o function1.o function2.o
    gcc -o main main.o function1.o function2.o
main.o: main.c function1.h function2.h
    gcc -c main.c
function1.o: function1.c function1.h
    gcc -c function1.c
function2.o: function2.c function2.h
    gcc -c function2.c
clean:
    rm *.o

make命令会读取makefile文件的内容,比较目标文件和依赖文
件的日期和时间,当依赖文件的日期比目标文件得时间新的时候,
则根据命令重新生成目标文件

简化写法

变量

隐式规则

  1. C语言程序
    .o文件会自动找到对应的.c文件,用cc命令进行编译
  2. C++程序
    .o文件会自动找到对应的.cc文件,用g++进行编译
  3. 汇编程序
    .o文件会自动找到对应的.s文件,并且用as命令进行汇编

简化后:

main: main.o function1.o function2.o   
clean:
    rm *.o

伪目标

.PHONY:clean
伪目标的语句一定会执行,而不管目标文件是否是最新的。例如:在源代码所在目录下有一个名为clean的文件,那么在make后,它的修改时间一直不会不变化,导致make clean 失效。此时就可以用 .PHONY:clean 来强制cLean。

同时生成多个可执行文件

.PHONY: clean all
all: main hello
main: main.o
    gcc $^ -o $@
hello: hello.o
    gcc $^ -o $@
%.o: %.c
    gcc -c $^ -o $@
clean:
    rm -rf *.o

makefile学习资料.

  • 2013年03月18日 15:31
  • 1.2MB
  • 下载

GNU make 指南 GNU make 指南GNU make 指南

  • 2010年04月15日 16:45
  • 158KB
  • 下载

make make dist make install

Makefile在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作:make根据Makefile编译源代码,连接,生成目标文件,可执行文件。make clean清除...
  • cj2580
  • cj2580
  • 2017-08-01 09:40:12
  • 98

make make install make uninstall

通常的安装方法是从源码安装包的目录执行以下命令:   tar -xzvf soft1.tar.gz  若是bz2结尾的改用     tar -jzvf soft1.tar.bz2 然后   ...
  • zhangjiarui130
  • zhangjiarui130
  • 2017-06-13 16:23:54
  • 109

GNU make中文手册.pdfGNU make中文手册.pdfGNU make中文手册.pdfGNU make中文手册.pdfGNU make中文手册.pdf

  • 2017年11月07日 14:59
  • 1.38MB
  • 下载

configure && make && make install

这里
  • yl1415
  • yl1415
  • 2015-04-21 13:04:51
  • 1181

GNU make中文手册

  • 2008年12月18日 15:24
  • 189KB
  • 下载

./configure && make && make install详解

在Linux中利用源码包安装软件最重要的就是要仔细阅读安装包当中的README  INSTALL两个说明文件,这两个文件会清楚的告诉你如何可以正确的完成这个软件的安装!          我们都...
  • haiqiao_2010
  • haiqiao_2010
  • 2015-05-26 11:25:13
  • 5869

make 、 make all 、 make clean 、 make install 区别

make,仅编译; make install,编译并安装(比如安装到/usr/bin目录下,然后可以直接使用。因为/usr/bin只有管理员才能向里面添加文件,所以通常要加sudo)...
  • qing101hua
  • qing101hua
  • 2016-11-19 11:08:38
  • 9637

Makefile里面的$(MAKE)

make 定义了很多默认变量,${MAKE} 就是预设的 make 这个命令的名称(或者路径)。 make -p 可以查看所有预定义的变量的当前值。 -----------------------...
  • shenwansan_gz
  • shenwansan_gz
  • 2016-01-03 10:24:54
  • 1997
收藏助手
不良信息举报
您举报文章:make
举报原因:
原因补充:

(最多只允许输入30个字)