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

如何强制gnu make不能并行构建配方?

GNU Make 是一个常用的构建工具,它可以自动化构建过程并管理软件项目的依赖关系。在默认情况下,GNU Make 会尝试并行构建配方以提高构建速度。然而,有时候我们希望禁止并行构建,以确保构建过程的顺序性和可靠性。

要强制 GNU Make 不能并行构建配方,可以通过以下两种方式实现:

  1. 设置 -j 参数为 1:在运行 Make 命令时,可以通过 -j 参数来指定并行构建的任务数。将 -j 参数设置为 1,即 make -j1,表示只允许单个任务并行执行,从而禁止并行构建配方。
  2. 使用 .NOTPARALLEL 特殊目标:在 Makefile 中,可以使用 .NOTPARALLEL 特殊目标来禁止并行构建。将 .NOTPARALLEL 放置在 Makefile 的任意位置,即可确保整个构建过程不会并行执行。

这两种方法都可以达到禁止并行构建配方的效果,具体选择哪种方法取决于个人偏好和项目需求。

注意:以上方法是针对 GNU Make 的,不同的构建工具可能有不同的设置方式。

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

相关·内容

CMake 秘籍(二)

配方适用于 CMake 版本 3.5(及更高版本),并在 GNU/Linux、macOS 和 Windows 上进行了测试。...该配方适用于 CMake 版本 3.10(及更高版本),并在 GNU/Linux、macOS 和 Windows 上进行了测试。 在本配方中,我们将讨论如何借助 CMake 发现主机处理器指令集。...编译器将根据性能关键部分之前的预处理器指令生成并行代码。在本教程中,我们将构建以下示例源代码(example.cpp)。...本配方将展示如何找到 Eigen 库,并指示它使用 OpenMP 并行化并将部分工作卸载到 BLAS 库。 准备就绪 在本例中,我们将编译一个程序,该程序分配一个随机方阵和从命令行传递的维度的向量。...本配方适用于 CMake 版本 3.5(及更高版本),并在 GNU/Linux、macOS 和 Windows 上进行了测试。 本配方补充了之前的配方,检测外部库:I. 使用 pkg-config。

45920

15个私有云上的 DevOps 开源工具

对于任何支持的企业组织,操作流程的自动化和文档记录,规划变更和跟踪应用的更新都是强制性的要求。 同样的方法也适用于云计算的工作负载量。...例如,许多硬件相关的操作不匹配--你不能用一个软件工具,去物理的连接服务器上的硬件开关(本人注:服务器的 IPMI 是可以做到远程控制呀。)...1.1 Chef Chef 的配置文件使用领域专用语言(DSL)的“配方”(以.rb 为文件扩展名)。多个配方也可以整合到一个菜谱(cookbook)中。...3.1 MCollective MCollective 是构建服务器编排和并行工作执行系统的框架,而不是一个工具。MCollective 支持分散库存和自动发现。...用于构建,测试和自动化部署应用程序。通常Jenkins用作软件开发的 CI/CD 工具。Jenkins 的作业(构建)可以由各种触发器启动。

2.3K50

CMake 秘籍(三)

并行运行测试,将向您展示如何通过并行执行测试来缩短总测试时间),并且测试按定义的顺序执行(第 9 个配方,运行测试子集,将向您展示如何更改顺序或运行测试子集)。...使用 add_custom_command 执行没有输出的命令,在目标构建之前或之后。 这三个选项强制特定的语义,并且不可互换。接下来的三个配方将阐明它们的使用案例。...本配方将展示如何使用add_custom_command的第二个签名来执行无输出的自定义操作。这对于在特定目标构建或链接之前或之后执行某些操作非常有用。...该配方适用于 CMake 版本 3.9(及更高版本),并在 GNU/Linux、macOS 和 Windows 上进行了测试。 CMake 提供了一种特定于领域的语言来描述如何配置和构建项目。...如何操作 在编写CMakeLists.txt文件时,我们将重用我们在第三章,检测外部库和程序,第 6 个配方,检测 MPI 并行环境中遇到的构建块: 我们声明一个 C++11 项目: cmake_minimum_required

45720

CMake 秘籍(七)

,解释如何获取和构建代码,并说明如何有效地使用您的代码或库,对于开发者,描述库的内部细节,并帮助其他程序员参与并贡献于您的项目。...本配方适用于 CMake 版本 3.5(及以上),并在 GNU/Linux 和 macOS 上进行了测试。...它是如何工作的 由于我们在与目标环境(Windows)不同的宿主环境(在这种情况下,GNU/Linux 或 macOS)上配置和构建代码,我们需要向 CMake 提供有关目标环境的信息,我们已经在toolchain.cmake...它是如何工作的 我们已成功使用简单的工具链进行交叉编译,在 Windows 平台上构建了用于并行执行的可执行文件。我们能够通过设置OMP_NUM_THREADS来指定 OpenMP 线程的数量。...本配方适用于 CMake 版本 3.5(及更高版本),并在 GNU/Linux 和 macOS 上进行了测试。

8900

CMake 秘籍(四)

在本章和后续的一些配方中,我们将展示如何生成一个简单的源文件,该文件定义了一个函数来报告构建系统配置。...您可能希望与 CMake 并行使用的构建框架的一个例子是 Sphinx 文档框架,它生成文档并将其部署到 Read the Docs 服务以在线提供您的代码文档。...在本配方中,我们希望更进一步,并演示如何构建时记录 Git 哈希(或一般而言,执行其他操作),以确保每次我们构建代码时都会运行这些操作,因为我们可能只配置一次,但构建多次。...在本配方中,我们实现了在构建时执行 CMake 代码。...这是推荐的实践,允许我们使用相同的源代码配置不同的构建(顺序或并行,Debug或Release),而不需要复制源代码,也不需要在源代码树中散布生成的和对象文件。

19420

CMake vs Make对比

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

3.9K31

CMake 秘籍(八)

我们很快将开始添加目标,以使构建更加充实。 如何同时允许传统配置和 CMake 配置 CMake 的一个非常好的特性是,我们可以在源代码目录之外构建构建目录可以是任何目录,而不必是项目目录的子目录。...移植测试 现在让我们讨论如何将测试从参考构建移植到我们的 CMake 构建。 开始 如果正在移植的项目包含测试目标或任何形式的自动化测试或测试脚本,第一步将再次是运行传统的测试步骤并记录使用的命令。...其次,为测试添加COST估计,以便在并行运行时,较长的测试首先启动,以最小化总测试时间(参见第四章,创建和运行测试,第 8 个配方并行运行测试)。...一种强制分离变量范围的方法是将大型项目划分为 CMake 项目,这些项目使用超级构建模式(参见第八章,超级构建模式)。考虑将大型CMakeLists.txt文件拆分为较小的模块。...强制严格顺序的 CMake 源码往往比较脆弱。这也与变量的讨论有关(见前一段)。某些语句和模块的顺序是必要的,但为了得到稳健的 CMake 框架,我们应该避免不必要的顺序强制

12610

探索Linux内核:Kconfig的秘密

深入了解Linux配置/构建系统是如何工作的。 自从Linux内核代码迁移到Git之后,Linux内核配置/构建系统(也称为Kconfig/kBuild)已经存在了很长时间。...为了探索Linux内核是如何编译的,本文将深入研究Kconfig/kBuild内部进程,解释.config文件和vmlinux/bzImage文件是如何生成的,并介绍一个用于依赖性跟踪的智能技巧。...KBuild 组件式建筑,称为递归制作,是GNU的一种常见方式。制作,使管理一个大型项目。KBuild是递归make的一个很好的例子。...看看如何在Linux内核中实现递归make,并借助简化的Makefile代码: # In top Makefile vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps...$(vmlinux-dirs): $(Q)$(MAKE) $(build)=$@ need-builtin=1 递归的配方扩展,例如: make -f scripts/Makefile.build

1.7K11

第二十四章 : 编译程序

如果有错误信息,整个配置过程失败,然后程序不能构建直到修正了错误。...Makefile 是一个配置文件,指示 make 程序究竟如何构建程序。没有它,make 程序就不能运行。...为什么它没有重新构建程序呢?啊,这就是 make 奇妙之处了。make 只是构建需要构建的部分,而不是简单地重新构建所有的内容。由于所有的目标文件都存在,make 确定没有任何事情需要做。...这个非常有意义,做为一名程序员,经常会更新一点儿源码,然后使用 make构建一个新版本的成品。make 确保基于更新的代码构建了需要构建的内容。...Make Manual: GNU Make 手册 http://www.gnu.org/software/make/manual/html_node/index.html

22710

「翻译」在生物信息学中使用 GNU-Parallel

GNU Parallel[1] 是一个用于加速生信分析不可或缺的一个工具。它允许你非常简单地对命令并行化处理。下面我将介绍一些如何使用它以及如何将它应用于生信。...这是并行化的本质:不是所有的任务都会花费相同的时间,所以有的结束的早,有的结束的晚,因此输出顺序并不一致。我们可以使用 -k 选项强制程序执行“先入先出”准则。...使用 GNU Parallel 进行 Variant Calling 当处理 BAMs 或 VCFs 时,你可以并行处理所有的染色体。大多数变异检测软件或注释工具允许你通过指定区间一次处理一个染色体。...总结 GNU Parallel 可以极大提高简单并行场景任务处理效率。虽然需要编写额外的代码用于处理拆分和组合两步,但这可以得到极大的效率提升。...Reference [1] GNU Parallel: https://www.gnu.org/software/parallel/ [2] homebrew: https://www.danielecook.com

1.2K20

飞凌全志T527开发板进行简单的性能测试

交叉编译 make PORT_DIR=ok527 编译结束后会报错,但是已经生成了交叉编译的coremark.exe可执行程序。...这是由于架构不同,该交叉编译的程序并不能在电脑上直接运行。 将文件夹下的coremark.exe复制到板卡上,执行 chmod 777 coremark.exe ....最后执行编译 make clean make 生成的三个可执行文件分别为dhry2_64(无优化等级)、dhry22_64(优化等级2)、dhry23_64(优化等级3)。...rm -f *.o stream 编译执行后得到可执行文件stream,将其复制到板卡上并执行 此外,在编译程序时还可以启用-fopenmp选项,它会告诉编译器生成能利用多线程的代码,从而可以并行地执行内存读取和写入操作...,从而更好地模拟真实应用的负载情况,因为现代应用程序往往利用了多核架构的并行处理能力。

4110

xmake v2.3.4 发布, 更加完善的工具链支持

设置构建行为策略 xmake有很多的默认行为,比如:自动检测和映射flags、跨target并行构建等,虽然提供了一定的智能化处理,但重口难调,不一定满足所有的用户的使用习惯和需求。...根据提示,我们可以自己分析判断,是否需要强制设置这个flags,一种就是通过: add_ldflags("-static", {force = true}) 来显示的强制设置上它,跳过自动检测,这对于偶尔的...set_policy("check.auto_map_flags", false) build.across_targets_in_parallel 这个策略也是默认开启的,主要用于跨target间执行并行构建...,v2.3.3之前的版本,并行构建只能针对单个target内部的所有源文件, 跨target的编译,必须要要等先前的target完全link成功,才能执行下一个target的编译,这在一定程度上会影响编译速度...然而每个target的源文件是可以完全并行化处理的,最终在一起执行link过程,v2.3.3之后的版本通过这个优化,构建速度提升了30%。

1.4K20

linux下,Makefile是啥??

Linux环境下的程序员如果不会使用GNU make构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Unix程序员。...在Linux(unix)环境下使用GNUmake工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。...最好不要用“GNUmakefile”,是GNUmake识别的。...执行make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。...显式规则说明了如何生成一个或多个目标文件。这是由Makefile的书写者明显指出要生成的 文件、文件的依赖文件和生成的命令。 隐晦规则。

1.2K20

xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持

尽管网上也有介绍 CMake 如何去配置构建 linux 驱动,但是大都是通过 add_custom_command 方式自定义各种命令,然后执行 echo 去自己拼接生成 Linux 的 Makefile...简单么,也许你会说,这跟直接用 Makefile 配置,然后 make 编译也没啥太大区别么。...也就是说,不管在哪个环境,用户都不需要关心如何去搭建内核驱动开发环境,仅仅只需要一个 xmake 命令,就能搞定一切。...同样的,我们不用关心如何准备 linux-headers 去支持交叉编译,Xmake 的依赖包管理会帮你准本好一切,拉取构建支持对应架构的内核源码。...构建 Arm64 驱动模块 $ xmake f -p cross -a arm64 --sdk=/mnt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

2.5K10
领券