首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让GNU make输出它执行的命令来构建其目标

GNU make是一个常用的构建工具,用于自动化构建软件项目。它通过读取Makefile文件中的规则来确定如何构建目标。默认情况下,make在执行规则时不会显示实际执行的命令,只会显示规则的输出。

要让GNU make输出它执行的命令来构建其目标,可以使用make命令的"-n"或"--just-print"选项。这个选项告诉make只打印命令,而不实际执行它们。例如:

代码语言:txt
复制
make -n target

这将打印出构建目标"target"所需的命令,但不会实际执行它们。这对于调试Makefile或查看构建过程中实际执行的命令非常有用。

另外,可以使用make命令的"-p"或"--print-data-base"选项来打印make的内部数据库,其中包含了所有的规则和变量。这可以帮助了解make是如何解析Makefile并执行命令的。例如:

代码语言:txt
复制
make -p

这将打印出make的内部数据库,包括所有的规则和变量。可以通过查看这些信息来了解make是如何执行命令来构建目标的。

总结起来,要让GNU make输出它执行的命令来构建其目标,可以使用以下方法:

  1. 使用make命令的"-n"或"--just-print"选项,例如:make -n target。
  2. 使用make命令的"-p"或"--print-data-base"选项,例如:make -p。

请注意,以上答案中没有提及腾讯云相关产品和产品介绍链接地址,因为与GNU make相关的问题与云计算品牌商无关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux下make命令的使用方法

Make 如何工作的 对于不知道背后机理的人来说,make 命令像命令行参数一样接收目标。这些目标通常存放在以 “Makefile” 来命名的特殊文件中,同时文件也包含与目标相对应的操作。...更多信息,阅读关于 Makefiles 如何工作的系列文章。 当 make 命令第一次执行时,它扫描 Makefile 找到目标以及其依赖。...如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立其依赖关系,然后编译它们。一旦主依赖编译之后,然后就编译主目标(这是通过 make 命令传入的)。...现在,假设你对某个源文件进行了修改,你再次执行 make 命令,它将只编译与该源文件相关的目标文件,因此,编译完最终的可执行文件节省了大量的时间。...--More-- 这是很长的输出,你也看到我使用了 more 命令来一页一页显示输出。 4.

3.6K20

第二十四章 : 编译程序

更有意义的是,拥有单独的一段知道如何打开文件的程序,并允许所有需要它的程序共享它。对常见任务提供支持由所谓的库完成。这些库包含多个程序,每个程序执行一些可以由多个程序共享的常见任务。...Makefile 是一个配置文件,指示 make 程序究竟如何构建程序。没有它,make 程序就不能运行。...make 只是构建需要构建的部分,而不是简单地重新构建所有的内容。由于所有的目标文件都存在,make 确定没有任何事情需要做。...这种行为也指出了 make 程序的另一个重要特征:它保持目标文件是最新的。make 坚持目标文件要新于它们的依赖文件。...这个非常有意义,做为一名程序员,经常会更新一点儿源码,然后使用 make 来构建一个新版本的成品。make 确保基于更新的代码构建了需要构建的内容。

25410
  • Linux下的make命令用法

    本文我们将用一些实例来讨论 make 命令背后的工作机制。 Make 如何工作的 对于不知道背后机理的人来说,make 命令像命令行参数一样接收目标。...这些目标通常存放在以 “Makefile” 来命名的特殊文件中,同时文件也包含与目标相对应的操作。更多信息,阅读关于 Makefiles 如何工作的系列文章。...当 make 命令第一次执行时,它扫描 Makefile 找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立其依赖关系,然后编译它们。...现在,假设你对某个源文件进行了修改,你再次执行 make 命令,它将只编译与该源文件相关的目标文件,因此,编译完最终的可执行文件节省了大量的时间。...--More-- 这是很长的输出,你也看到我使用了 more 命令来一页一页显示输出。 4.

    17.6K41

    CMake vs Make对比

    “Make”是从程序的源文件中控制程序的可执行文件和其他非源文件的生成工具。 “Make”工具需要知道如何构建程序。它了解如何从名为“makefile”的文件构建程序。...这个makefile列出了每个非源文件以及如何从其他文件中计算它。编写程序时,应该为其编写一个makefile,以便可以使用“Make”来构建和安装程序。简单的东西!...如果您不知道,您不能使用相同的编译器来构建所有不同类型的源。您可以在每次建立项目时手动执行,但这将是乏味和痛苦的。CMake为每种类型的目标调用正确的命令序列。...为此,GNU项目开发了一套集成的实用工具来完成Autoconf开始的工作:GNU构建系统,其最重要的组件是Autoconf,Automake和Libtool。 “做”不能这样做,至少没有修改它!...CMake解决了同样的问题,但与此同时,它具有优于GNU构建系统的一些优点: 用于编写CMakeLists.txt文件的语言是可读和易于理解的。 它不仅依靠“Make”来构建项目。

    4.1K31

    【linux】gcc makefile

    如果test.c 更新过或 mytest 不存在,会执行 gcc -o mytest test.c。 make工具使用文件的时间戳来决定哪些目标需要重新构建。...具体来说,make会比较目标文件和其依赖文件的修改时间戳。如果依赖文件比目标文件更新,则目标文件需要重新构建。...makefile/make会自动根据文件中的依赖关系,进行自动推导,帮助我们执行所有相关的依赖方法 这个 Makefile 使用了变量来定义构建目标和源文件路径,以及自动化构建和清理过程。...生成目标文件的命令: @gcc -o @ ^: @:抑制命令回显,使得在执行这条命令时不输出命令本身。可以使输出更加整洁。...构建命令: make 这会触发以下操作: 使用 gcc 命令编译 test.c,生成 mycode。 使用 echo 命令输出编译信息。

    5910

    Linux:常用软件、工具和周边知识介绍

    如何确定目标文件是否最新: 当你执行 make 命令时,make 工具会比较每个目标文件和它所依赖的源文件的修改时间。...如果源文件的修改时间比目标文件的修改时间更晚,或者目标文件不存在,make 工具会执行构建该目标文件的命令。...在 Makefile 中,使用 .PHONY 来声明一个目标为伪目标。这样,当 make 命令执行时,就会忽略目标对应文件的存在与否,直接执行后续定义的命令。...无论是否存在名为 clean 的文件,执行 make clean 命令时,都会执行 rm -f *.o 命令来清理所有 .o 文件。...如果该目标文件不存在,或是其依赖的文件比目标文件的修改时间新(包括依赖的文件和目标文件本身),那么 make 将会执行后面定义的命令来生成目标文件。

    26910

    Linux makefile 教程 非常详细,且易懂

    这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。...Makefile中,“#”是注释符,很像C/C++中的“//”,其后的本行字符都被注释。 一、显示命令 通常,make会把其要执行的命令行在命令执行前输出到屏幕上。...八、shell函数 shell函数也不像其它的函数。顾名思义,它的参数应该就是操作系统Shell的命令。它和反引号“`”是相同的功能。这就是说,shell函数把执行操作系统命令后的输出作为函数返回。...$(warning ) 这个函数很像error函数,只是它并不会让make退出,只是输出一段警告信息,而make继续执行。...另外一个很有意思的用法是结合“-p”和“-v”来输出makefile被执行时的信息(这个将在后面讲述)。 五、make的参数 下面列举了所有GNU make 3.80版的参数定义。

    4.3K20

    【Linux】《how linux work》第十五章 开发工具

    Makefile 中的下一项包含第一个目标,即 all。第一个目标总是默认的,也就是当你在命令行上运行 make 时,make 希望构建的目标。...它知道当你需要一个 .o 文件时,要查找一个 .c 文件,并且,它知道如何运行 cc -c 来编译该 .c 文件,以达到创建 .o 文件的目标。...如果你连续两次输入 make 命令来运行上述示例,第一次命令会构建 myprog,但第二次会输出以下内容: make: Nothing to be done for 'all'....The make run proceeds like this: 事实上,你甚至不需要一个Makefile来运行make。 如果内置的make规则匹配一个目标,你只需让make尝试创建该目标即可。...很难区分宏和变量的区别,所以我们将使用术语“宏”来表示在make开始构建目标后通常不会改变的东西。

    11110

    Makefile经典教程(掌握这些足够)

    这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。...在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头。记住,make并不管命令是怎么工作的,他只管执行所定义的命令。...Makefile中,“#”是注释符,很像C/C++中的“//”,其后的本行字符都被注释。 4.1 显示命令 通常,make会把其要执行的命令行在命令执行前输出到屏幕上。....> ) 这个函数很像error函数,只是它并不会让make退出,只是输出一段警告信息,而make继续执行。...例如,我们有个mak efile的名字是“hchen.mk”,那么,我们可以这样来让make来执行这个文件: make –f hchen.mk 如果在make的命令行是,你不只一次地使用了

    2.8K20

    聊一聊鸿蒙的构建系统

    比如编程入门的经典代码,将它写入 helloworld.c 文件中。要编译这段代码,只需要执行以下命令: gcc helloworld.c 编译后会生成一个 a.out 的可执行程序。...,最后链接成可执行代码,这时命令行方式就捉襟见肘。...GNU Make 通过 Makefile 定义目标依赖、编译规则,也可以调用脚本,完成文件复制、打包等工作,相当强大,至今仍然是类 Unix 系统上主流的软件构建工具。...对于开发者而言,不需要去深入了解 Ninja 或 GNU Makefile 这样构建系统,因为它只是一种中间输出。 再后来,谷歌又对 GYP 动刀,取而代之的是 GN 构建系统。...如果只是它来构建软件,可以下载 depot_tools,里面包含了 GN、Ninja 等整套的构建工具。

    1.5K20

    【Linux】《how linux work》第十六章 从 C 源代码编译软件入门

    这个系统通常被认为是稳定的,许多基本的Linux工具都在使用它。因为它基于现有的工具如make,一旦你看到它的运行方式,你就能将你的知识转移到其他构建系统上。...运行make来构建程序。运行make install或特定于发行版的安装命令来安装软件包。...在大多数情况下,在源代码分发中的目标(或二进制可执行)文件意味着软件包组装不完整,您应该运行make clean以确保进行新的编译。...从http://ftp.gnu.org/gnu/coreutils/获取软件包(通常最新版本是最好的),解压缩,进入其目录,并像这样配置它:$ ....make check 一些软件包附带一系列测试来验证编译后的程序是否正常工作;make check 命令会运行这些测试。

    10510

    成为Oceanbase贡献者(2):源码解读build.sh debug --make 的执行过程

    本文主要描述:源码如何编译ob build.sh debug --make 的执行过程# 1. 初始化依赖./build.sh --init# 2. 选择编译模式(debug/release等)....CMake本身不直接生成可执行文件,而是生成其他构建工具所需的中间文件例如Make能够输出各种各样的makefileMakefile:适合小型项目或需要手动调整构建流程的场景。...使用 CMake 构建项目完成上述两步后,你就可以使用 CMake 来构建你的项目了。以下是构建步骤:打开命令行界面,导航到包含 CMakeLists.txt 和 main.cpp 文件的目录。...是一种简化构建流程的方法,让你不必关心底层使用的具体构建工具是什么,//同时提供了足够的灵活性来满足不同的构建需求。...你可以直接运行这个文件来查看输出:.

    4700

    【makefile】

    实际上,GNU make工具通过一个称为Makefile的文件来完成对应用程序的自动维护和编译工作。...默认命令是“g++”。 CO 从 RCS文件中扩展文件程序。默认命令是“co”。 CPP C程序的预处理器(输出是标准输出设备)。默认命令是“$(CC) –E”。...2.2隐含规则 GNU make 包含有一些内置的或隐含的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。...2.4 Makefile中的函数 在Makefile中可以使用函数来处理变量,从而让命令或规则更为的灵活和具有智能,函数调用,很像变量的使用,也是以“$”来标识的,函数调用后,函数的返回值可以当做变量来使用...其按顺序找这三个文件,一旦找到,就开始读取这个文件并执行,也可以给make命令指定一个特殊名字的Makefile,要求使用make的“-f”参数,例如:make -f Hello.makefile.

    2K00

    自动生成Makefile的全过程详解

    在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常 见的GNU程序一样,只要使用“....你还可以试着使用一些其 他的make命令,如make clean,make install,make dist,看看它们会给你什么样的效果。感觉如何?...7、 Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件。...make clean 清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。...这个操作将自动把压缩包文件解开,然后执行configure命令,并且执行make,来确认编译不出现错误,最后提示你软件包已经准备好,可以发布了。

    1.8K20

    【C++】基础:代码编译与构建工具介绍

    常用构建工具 make make工具相当于一个批处理工具,本身没有编译和链接的功能,而是用类似于批处理的方式通过调用makefile文件中用户指定的编译命令(如gcc、g++)来进行编译和链接(当作批处理工具用就行...makefile相当于用户将要执行的一系列命令,make根据makefile中的命令对相应的源文件进行编译和链接。...makefile文件才行,执行make all这个命令后make会根据makefile中的命令进行编译。...${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令来调用自己的模块 EXECUTABLE_OUTPUT_PATH:重新定义目标二进制可执行文件的存放位置 LIBRARY_OUTPUT_PATH...它旨在提供高效、可扩展和可靠的构建系统,适用于大型项目和分布式代码库。

    27210

    【linux学习指南】Linux项目自动化构建工具 make makefile&&进度条代码

    make 命令 常用的 make 命令有: make: 构建 Makefile 中的默认目标。 make target: 构建指定的目标。 make clean: 清理构建产生的中间文件。...make all: 构建 Makefile 中的所有目标。 make -n: 显示执行命令,但不实际执行。 make -j : 并行构建,指定同时执行的命令数量。...使用make命令,可以直接执行Makefile的文件命令 但是,当我再次执行make命令,这里的proc的文件无法再次执行: 这个问题是因为: .PHONY是让目标文件,对应方法,总是被执行...通常,make 会在执行每一条命令时打印命令本身。使用 @ 符号可以让 make 只输出命令的结果,而不输出命令行。...即命令——“make clean”,以此来清除所有的目标文件,以便重编译。 但是一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是被执行的。

    36010

    命令行上的数据科学第二版:六、项目管理与`make`

    步骤之间的依赖关系不清楚。 每一步每次都要执行,这是低效的,有时也是不可取的。 这就是make真正闪耀的地方 。make是一个命令行工具,允许您: 根据输入和输出依赖关系形式化您的数据工作流步骤。...任何其他文件都是使用命令行工具下载或生成的。 6.2 make介绍 make围绕数据及其依赖关系组织命令执行。您的数据处理步骤在一个单独的文本文件(工作流)中被正式化。每一步都有输入和输出。...一个目标就像一个任务。它通常是您想要创建的文件的名称,但也可以比它更通用。下面这条线,seq 7,被称为规则 。把一个规则想象成一个食谱;一个或多个指定如何构建目标的命令。...这不仅会让您的生活变得更轻松(双关语),而且您还会开始按照步骤来考虑您的数据工作流。正如您自己的命令行工具箱一样,它会随着时间的推移而扩展,这同样适用于make工作流。...您定义的步骤越多,就越容易继续做下去,因为通常您可以重用某些步骤。我希望你会习惯make,它会让你的生活更轻松。 6.6 总结 命令行的一个优点是它允许您处理数据。

    70310

    居然还有方式可以查看Java方法的汇编代码,真是神奇。

    在jdk目录里,我们执行以下命令,要求构建一个debug版本的jdk,并指定其安装路径为jdk-build: $ bash configure --with-debug-level=slowdebug...configure命令执行成功后,我们再执行下面的命令,开始真正构建jdk,并将构建成功后的jdk安装到jdk-build目录里: $ make images $ make install 以上两个命令成功后...想要查看java方法在jit编译后的汇编代码,我们不仅要在执行java命令时指定一些参数,还需要一个额外的小工具,来辅助我们解汇编代码。...由上图可见,该工具还是非常简单的,它主要是通过调用gnu的binutils来解jvm输出的汇编代码,该工具的详细构建过程可以参考README和Makefile。...下载完binutils后,我们执行以下命令,开始构建hsdis: $ make BINUTILS=binutils-2.35.1 all64 如果没有问题的话,最终会在build/linux-amd64

    1.4K21

    Make 快速入门

    但是,make 不限于某一特定语言,凡是可以通过 shell 命令来运行编译器的语言都可以使用 make 。...Makefile 在使用 make 之前,你必须在当前目录下添加一个 Makefile 文件,它描述了文件之间的依赖(输入输出)关系,并提供更新文件的 Shell 命令。...,例如:可执行文件或目标文件;它也可以是要执行任务的名称,例如用于清理生成文件的 clean 任务。...在不使用项目中安装的包的情况下,即项目目录下 node_modules 里的包,完全可以使用 Makefile 来完成一些构建任务,make 的优势在于更好管理相互依赖的构建任务。 3....既可以出现在目标,先决条件,也可以出现在“菜谱”的 shell 命令中;可以是命令本身,也可以是命令的选项,或者输入输出文件;甚至也可以出现在另一个变量的引用中(计算变量)。

    1.5K10

    全网最牛Linux内核Makefile系统文件详解(纯文字代码)

    这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。...在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头。记住,make并不管命令是怎么工作的,他只管执行所定义的命令。...例如,如果我们执行下面的命令: cc -M main.c 其输出是: main.o : main.c defs.h 于是由编译器自动生成的依赖关系,这样一来,你就不必再手动书写若干文件的依赖关系,而由编译器自动生成了...Makefile中,“#”是注释符,很像C/C++中的“//”,其后的本行字符都被注释。 一、显示命令 通常,make会把其要执行的命令行在命令执行前输出到屏幕上。...还有一个在“嵌套执行”中比较有用的参数,“-w”或是“--print-directory”会在make的过程中输出一些信息,让你看到目前的工作目录。

    3.3K20
    领券