make命令

2023-05-16

目录

1、一个简单 makefile例子

2、make指令参数

2.1、make -f filename

2.2、make -C M=


        代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建。

1、一个简单 makefile例子

        Make这个词,英语的意思是"制作"。Make命令直接用了这个意思,就是要做出某个文件。比如,要做出文件a.txt,就可以通过以下步骤实现:

        1)书写规则,描述如何通过调用其它命令实现这个功能。

        比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。

a.txt: b.txt c.txt
    cat b.txt c.txt > a.txt

        也就是说,make a.txt 这条命令的背后,实际上分成两步:第一步,确认 b.txt 和 c.txt 必须已经存在,第二步使用 cat 命令 将这个两个文件合并,输出为新文件。

        像这样的规则,都写在一个叫做Makefile的文件中,Make命令依赖这个文件进行构建。Makefile文件也可以写为makefile。

        2)命令执行

$ make a.txt

        此时, 会默认读取当前目录Makefile或makefile的文件,根据makfile中的规则执行,生成a.txt文件。

测试:

结果:

        1)生成a.txt文件,内容为:

make test.

        2)终端打印出执行命令:

2、make指令参数

2.1、make -f filename

        执行make指令默认查找解析makefile文件中的规则,也可通过用命令行参数指定为其他文件名。如:

$ make -f rules.txt
# 或者
$ make --file=rules.txt

        上面代码指定make命令依据rules.txt文件中的规则,进行构建。

2.2、make -C M=

        -C $(KDIR) 指明跳转到内核源码目录下读取那里的Makefile;

        M=$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile。

Makefile:
PWD = $(shell pwd)
KERNEL_SRC = /usr/src/linux-source-2.6.15/
 
obj-m := test.o
module-objs := test.o
 
all:
       $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules
clean:
       rm *.ko
       rm *.o

        执行:make -C /usr/src/linux-source-2.6.15/ M=/home/vmeth modules,在test.c和Makefile所在的目录下运行make,如果看到类似输出:

make[1]: Entering directory `/usr/src/linux-source-2.6.15'
  CC [M]  /home/vmeth/hello.o
  Building modules, stage 2.
  MODPOST
  CC      /home/vmeth/hello.mod.o
  LD [M]  /home/vmeth/hello.ko
make[1]: Leaving directory `/usr/src/linux-source-2.6.15'

摘抄自:make -C M= - 屁屁侠 - 博客园

        总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

make命令 的相关文章

  • make: *** No rule to make target `menuconfig'. Stop.问题解决方案-Linux(3)

    前言 本问题是我在编译更新内核时所遇到的 xff0c 已经解决 问题描述 在编译内核时 xff0c 运行make menuconfig 时出现 xff0c 截图如下 这个是因为没有找到要配置的文件 解决方案 进入解压得到的Linux原文件夹
  • catkin_make报错

    catkin make报错 xff1a CMake Error at CMakeLists txt 1 Parse error Expected a span class token builtin class name command s
  • make[2]: *** No rule to make target ‘../lib/libopencv_core3.so.4.3.0‘, needed by xxxxx

    原因是我之前装的opencv版本是4 3 0 xff0c 为了https editor csdn net md articleId 61 126686315这个链接里的原因 xff0c 重装了opencv4 4 0 xff0c 结果再跑原来
  • catkin_make和cmake

    catkin make是ROS下面的一种编译方式 xff0c 基于cmake xff0c 但是又不同于cmake cmake只能编译指定的package xff0c 但是不同package之间的关系没办法链接 xff0c 而且cmake只能
  • ros catkin_make 出现add_custom_target cannot create target 错误

    今天用catkin make编译ros包出现如下错误 CMake Error at home liwei work catkin ws land build mycommbase cmake mycommbase genmsg cmake
  • make和cmake命令

    我们在安装Ubuntu软件时 xff0c 有时我们会用到make和cmake命令 所以在这篇文章我们来讲解一下 xff0c make命令和cmake命令他们的作用 xff0c 以及什么关系和区别 首先假设你有一定的计算机基础 xff0c 能
  • ros catkin_make 出现add_custom_target cannot create target 错误

    项目场景 xff1a 自己写了一个包A xff0c 内部有一个名字为AA的msg定义 xff0c 此节点发送内容为A的消息 同样的工程下面 xff0c 另一个包B需要用到AA这个消息内容 xff0c 并且接收A包发出来的消息内容 xff0c
  • make、makefile的使用解释(Linux项目自动化构建工具)

    本文所使用系统为Linux centos 7 makefile是一个文件 里面包含了 xff1a 1 文件与文件的依赖关系 2 文件与文件的依赖方法 为什么需要包含文件与文件的依赖方法和依赖方法呢 xff1f 一个工程中的源文件不计数 xf
  • Cannot make a static reference to the non-static method XXX() from the type XXX

    不能用调用静态方法的方式调用一个非静态的方法 xff1a 我在定义方法的时候不是static的 出现这个报错是因为java调用任何方法都要实例化 xff0c c 43 43 里有函数的概念 xff0c 但是java里的函数实际上是类的方法
  • Make 命令(持续更新)

    一 背景 Make是最常用的构建工具 xff0c 诞生于1977年 xff0c 主要用于C语言的项目 但是实际上 xff0c 任何只要某个文件有变化 xff0c 就要重新构建 的项目 xff0c 都可以用Make构建 make只是一个根据指
  • make_unique的使用

    关于make unique的构造及使用例程 xff0c MSDN的讲解非常详细 xff08 https msdn microsoft com zh cn library dn439780 aspx xff09 使用过程中 xff0c 我的理
  • C++(14):make_unique

    C 43 43 14增加了make unique xff0c 用于创建unique ptr对象 xff1a include lt iostream gt include lt memory gt using namespace std in
  • linux下makefile、make、Cmake的区别

    Makefile make工具 linux下makeflie和make的用法 makefile与make详解 人们通常利用make工具来自动完成编译工作 这些工作包括 xff1a 如果仅修改了某几个源文件 xff0c 则只重新编译这几个源文
  • makefile:2: *** missing separator. Stop. make 之后出现的错误,解决方法

    问题 今天建立了个个helloworld c 以及Makefile文件 hellworld c 中内容如下 span class hljs preprocessor include lt stdio h gt span span class
  • On make and cmake

    你或许听过好几种 Make 工具 xff0c 例如 GNU Make xff0c QT 的 qmake xff0c 微软的MS nmake xff0c BSD Make xff08 pmake xff09 xff0c Makepp xff0
  • cmake与make的区别及CMakeLists.txt文件编写

    一 cmake与make的区别 make工具是一个自动化编译工具 xff0c 它会根据Makefile中的规则进行批处理编译 当需要编译的文件较多时 xff0c 使用make工具会大大提高效率 但是 xff0c 当项目较大时 xff0c 编
  • 如何实现make工具的降版本?

    为什么要降make版本 因为编译MTK 平台的Android source code报错 而且是莫名奇妙的错误 困扰很久 一 问题背景 Ubuntu 15 04以上的make版本都已经是4 0 官方目前推荐的编译环境还是基于Ubuntu 1
  • 在ubantu下cmake与make命令的简单使用

    ubantu下简单的使用cmake与make的使用 Step 1 新建一个可执行程序 首先确保你已经安装了cmake 和 g 如果没有安装 就 sudo apt get install cmake g 然后准备一个工作空间 并准备一些素材
  • Android.mk的使用以及常用模板

    Android mk使用 一个Android mk file首先必须定义好LOCAL PATH变量 它用于在开发树中查找源文件 在这个例子中 宏函数 my dir 由编译系统提供 用于返回当前路径 即包含Android mk file文件的
  • make/makefile的使用

    make makefile 文章目录 make makefile 初步认识makefile的工作流程 依赖关系和依赖方法 make的使用 总结 make是一个命令 是一个解释makefile中指令的命令工具 makefile是一个文件 当前

随机推荐