当前位置: 首页 > news >正文

16、GNU Make 使用中的常见问题及算术功能实现

GNU Make 使用中的常见问题及算术功能实现

在使用 GNU Make 进行项目构建和开发时,会遇到一些常见的问题,同时也可以通过一些技巧来扩展其功能,比如实现算术运算等。下面将详细介绍这些内容。

构建速度与处理器数量

在小型构建中,处理器数量与最大加速比存在一定关系,如下表所示:
| 处理器数量 | 最大加速比 |
| — | — |
| 10 | 2.46x |
| 11 | 2.50x |
| 12 | 2.53x |

根据阿姆达尔定律预测,对于这个小型构建,大约从 8 个处理器开始,最大加速比会趋于平稳。而实际的平稳情况还受到构建中只有 13 个可能任务的限制。从构建结构来看,最多使用 8 个处理器,原因如下:
- 有 5 个任务(t1、t2、t4、t6 和 t7)可以无依赖地并行运行。
- 有 3 个小任务链,每个链一次使用一个处理器,分别是 t3、t5 和 t8;t9 和 t10;t11 和 t12。
- 构建 t 可以复用 8 个处理器中的一个,因为此时它们都处于空闲状态。

在实际应用中,像 C 和 C++ 这类有链接步骤的语言,阿姆达尔定律会显著影响构建时间。通常,在链接步骤之前会构建所有目标文件,然后运行一个(通常很大)的链接进程。这个链接进程往往无法并行化,成为构建并行化的限制因素。

让 $(wildcard) 函数递归

GNU Make 内置的 $(wildcard) 函数不是递归的,它只能在单个目录中搜索文件。不过,可以在 $(wildcard) 中使用多个通配符模式来查找子目录中的文件,例如 $(wildca

http://www.cnnetsun.cn/news/126960.html

相关文章:

  • 5个简单步骤:SQLCoder-7B-2模型快速入门完整指南
  • 软件日常开发、管理、交付文档合集
  • Univer表格数据质量控制与智能可视化:5个高效实践方案
  • 基于Java的同城票据结算智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 子网掩码初识
  • 内网渗透靶场实操清单(基于 Vulhub+Metasploitable 2)
  • Mushroom Cards:零代码打造专业级Home Assistant仪表盘的终极指南
  • 41、Samba 工具命令详解
  • 企业合同管理的安全锁——合同系统智能化
  • 光速革命:Diffractive-Deep-Neural-Networks开启光子AI新纪元
  • 高效自动化网络管理:Kea DHCP完整解决方案实战指南
  • 纯电动汽车两档ATM变速箱Simulink模型:含换挡控制与执行模块,附详细文档与注释
  • WebToEpub终极指南:一键将网页小说变电子书
  • 终极指南:escrcpy实现手机息屏远程控制的完整教程
  • Office.js 终极入门指南:快速开发你的第一个Office插件
  • AMD驱动精简终极指南:快速上手Radeon Software Slimmer
  • SpiffWorkflow工作流引擎实战:精通Python BPMN自动化
  • Unlock Music音乐解锁神器:打破数字限制,重获音乐自由
  • 5分钟掌握TinyVT:Windows系统监控的终极隐身术
  • Blender MMD工具完全指南:从模型导入到动画制作
  • MCP续证如何高效备考?(资深讲师亲授通关秘籍)
  • 复旦最新一篇DriveVGGT:面向自动驾驶,高效实现多相机4D重建
  • Dart Simple Live终极指南:一站式跨平台直播聚合解决方案
  • 3步解锁网易云NCM加密:ncmdumpGUI完全操作手册
  • 息屏远程控制终极指南:让escrcpy成为你的手机隐形管家
  • Happy Holidays from atsec
  • 办公室中的Python课 P07 【逻辑大脑】条件判断:让你的代码学会“做决定”
  • AI Agent部署权限设计(高阶安全架构全公开)
  • GIF流畅度提升终极指南:Waifu2x完整使用教程
  • MCP续证倒计时:5天内完成考试预约的紧急操作手册(限时必读)