make命令中的M选项,Makefile

 Song_Rr 发布于 2023-02-13 17:25

M不是一个选择make.注意它缺少连字符.M是分配给执行的变量make.如果make执行Makefile脚本,则此脚本可以读取变量M并使用其内容.

在您提供的示例中,make将读Makefile~/kernel-2.6并将您当前的工作目录分配给变量M.通常,这将允许make在处理后返回到当前目录Makefile.

3 个回答
  • 我有类似的测验

    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    

    这里的make在我的项目目录中调用.-C是选项:

    -C dir, - directory = dir在读取makefile或执行其他操作之前,切换到目录dir.如果指定了多个-C选项,则每个选项都相对于前一个选项进行解释:-C/-C等等于-C/etc.这通常与make的递归调用一起使用.

    M不是选项,而是传递给它的参数.由于-C更改了目录,我们知道make将读取该目录中的make文件.通过检查该目录中的make文件,我发现了它将要执行的操作M:

    从make文件(名为Makefile)指向的目录-C(btw是内核构建目录):

    # Use make M=dir to specify directory of external module to build
    # Old syntax make ... SUBDIRS=$PWD is still supported
    # Setting the environment variable KBUILD_EXTMOD takes precedence
    ifdef SUBDIRS
      KBUILD_EXTMOD ?= $(SUBDIRS)
    endif
    

    来自Linux设备驱动程序的解释,第3版,Jonathan Corbet等:

    此命令首先将其目录更改为随-C选项提供的目录(即您的内核源目录).在那里它找到了内核的顶级makefile.在尝试构建模块目标之前,M =选项会使makefile移回模块源目录.

    2023-02-13 17:28 回答
  • 阅读手册make:

    -C dir, --directory=dir
                Change to directory dir before reading the makefiles or doing anything else.
    

    您的调用将目录更改为~/kernelmake在那里有效地调用,即Makefile从该目录中读取.使用该M变量,makefile知道您的实际项目文件的位置,并可以更改回该位置.

    关键是你没有编写自己的makefile,而是使用一个一次性的版本.

    2023-02-13 17:29 回答
  • M不是一个选择make.注意它缺少连字符.M是分配给执行的变量make.如果make执行Makefile脚本,则此脚本可以读取变量M并使用其内容.

    在您提供的示例中,make将读Makefile~/kernel-2.6并将您当前的工作目录分配给变量M.通常,这将允许make在处理后返回到当前目录Makefile.

    2023-02-13 17:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有