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

16、构建与GNU Make的常见问题及算术实现

构建与GNU Make的常见问题及算术实现

在软件开发过程中,构建系统的效率和功能对于项目的顺利推进至关重要。本文将探讨一些构建相关的常见问题,以及如何利用GNU Make实现算术功能,甚至构建一个简单的计算器。

处理器数量与构建加速

在小型构建任务中,处理器数量对构建速度的提升存在一定的规律。根据Amdahl定律,当处理器数量达到约8个时,最大加速比会趋于平稳。实际情况中,由于构建任务只有13个可能的作业,这个平稳点会受到进一步限制。

以下是不同处理器数量对应的最大加速比表格:
| 处理器数量 | 最大加速比 |
| — | — |
| 10 | 2.46x |
| 11 | 2.50x |
| 12 | 2.53x |

从构建结构来看,最多使用8个处理器。因为有5个作业(t1、t2、t4、t6和t7)可以无依赖地并行运行,另外还有3个小作业链(t3、t5和t8;t9和t10;t11和t12),每个链每次使用一个处理器。而构建任务t可以复用这8个处理器中的一个,因为此时它们都处于空闲状态。

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

使$(wildcard)函数递归

GNU Make内置的$(wildcard)函数不是递归的,它只能在单个目录中搜索文件。不过,可以在$(wildcar

http://www.jsqmd.com/news/89158/

相关文章:

  • 基于Java的安全生产职业危害智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 信捷XDM PLC三轴可编程运动控制:强大且灵活的工业利器
  • Numpy基础20问
  • 降AI率就要牺牲文笔?WriterPro第一个不服!实测对比比原文写得还好,这文笔简直绝了
  • 基于Java的安全许可证智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • K8S-蓝绿发布与金丝雀发布
  • 信捷XDM PLC三轴可编程运动控制:打造灵活数控体验
  • YOLOv8+PyQt5西红柿成熟度检测(可以重新训练,yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)
  • 打开软件出现找不到vcomp140.dll文件 无法运行的情况 下载修复解决
  • 基于Java的安全评价师智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 并发编程的锁有哪些?怎么分类?
  • 2025/12/13
  • 打开软件出现找不到vcruntime140.dll文件 无法运行的情况 下载修复解决
  • 当AI开始“说人话“:微软VibeVoice如何让机器300毫秒内开口
  • 事务操作流程
  • 燕麦矮砧密植:水肥一体化系统的铺设要点
  • 打开软件出现找不到vcruntime140_clr0400.dll文件 无法运行的问题 下载修复解决
  • 字符串(String)是编程语言中一种非常基础且重要的数据类型
  • 紫薯矮砧密植:水肥一体化系统的铺设要点纪实
  • 贪吃蛇的java代码实现
  • 随机抽奖算法实现与对比:聚焦洗牌算法(Fisher-Yates)
  • 打开软件出现找不到vcruntime140d.dll文件的情况 下载修复解决
  • 外卖订餐管理系统
  • Level 2 → Level 3
  • 软件缺少vbschs.dll文件 无法启动运行的情况 下载修复
  • Flutter 混合开发实战:从 Add-to-App 到高性能双向通信的全栈集成方案
  • 外设与接口:基于内核 gpio-keys 子系统的按键处理
  • sglang 大模型推理框架支持的EAGLE 1,2,3
  • 延凡科技 EMS 智慧云平台:3 万起订阅,中小用能单位的 “云端全能源管家”
  • 拦截器注册InterceptorRegistry 实现讲解