访问手机版  

Linux常用命令|Linux培训学习|考试认证|工资待遇与招聘,认准超级网工!

招聘|合作 登陆|注册

网络工程师培训

当前位置:网络工程师 > 技术课程 > linux > 热点关注 > linux常用命令

linux中的make命令

时间:2019-06-28

linux 命令_linux命令_linux命令手册

make命令的选项和参数:

-k:它的作用是让make命令在发现错误时仍然继续执行,而不是在检测到第一个错误时就停下来。

-n:它的作用是让make命令输出将要执行的操作步骤,而不真正执行这些操作

-f :它的作用是告诉make命令将哪个文件作为makefile文件。如果未使用这个选项linux命令,标准版本的make

命令将首先在当前目录下查找名为makefile的文件linux命令,如果该文件不存在,它就会查找名为Makefile的文件。

linux命令手册_linux 命令_linux命令

但如果你是在linux系统中,你使用的可能是GNU Make,这个版本的make命令将在搜索makefile文件和

Makefile文件之前,首先查找名为GNUmakefile的文件。

1、依赖关系

/*main.c*/
    #include "a.h"
    /*2.c*/
    #include "a.h"
    #include "b.h"
    /*3.c*/
    #include "b.h"
    #include "c.h"
    则我们可以在makefile中:
    myapp:  main.o 2.o 3.o
    main.o: main.c a.h
    2.o:    2.c a.h b.h
    3.o:    3.c b.h c.h
这表示的是myapp依赖于main.o、2.o和3.o,而main.o依赖于main.c和a.h,等等
如果想要一次创建多个文件,你可以使用all。
all:myapp myapp.h
如果未指定一个all目标,则make命令将只创建它在文件makefile中找到的第一个目标

linux命令手册_linux 命令_linux命令

2、规则

makefile文件的第二个是规则,它们定义了目标的创建方式。在上节的例字中,当make命令确定

需要重建2.0时,它具体应该使用哪条命令呢?看上去只需使用命令gcc -c 2.c就够了,但是如果

需要指定头文件目录,或者为了今后的调试需要设置符号信息选项又该怎么做呢?这就需要makefile

文件中明确定义一些规则。

linux 命令_linux命令手册_linux命令

一个简单的makefile文件:
    myapp: main.o 2.o 3.o
        gcc -o myapp main.o 2.o 3.o
    main.o: main.c a.h
        gcc -c main.c
    2.o: 2.c a.h b.h
        gcc -c 2.c
    3.o: 3.c b.h c.h
        gcc -c 3.c
    $ make -f Makefile1

makefile文件中的宏:

带宏定义的makefile文件

all: myapp
    #which compiler
    CC = gcc
    #包含文件的位置在哪里 
    INCLUDE = .
    #发展选择
    CSLAGS = -g -Wall -ansi
    #释放选项
    #CFLAGS = -O -Wall -ansi
    myapp: main.c 2.o 3.o
        $(CC) -o myapp main.o 2.o 3.o
    2.o: 2.c a.h b.h
        $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c
    3.o: 3.c b.h c.h
        #(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c
内置宏的用法:
宏           定义
$?         当前目标所依赖的文件列表中比当前目标文件还要新的文件
$@         当前目标的名字
$<         当前依赖文件的名字
$*         不包括后缀名的当前依赖文件的名字
-:告诉make命令忽略所有错误
@:告诉make在执行某条命令前不要将该命令显示在标准输出上
 上一个教程:Blog of Chauncy Wang