news 2026/4/28 7:46:26

16、构建与算术:GNU make的实用技巧与挑战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
16、构建与算术:GNU make的实用技巧与挑战

构建与算术:GNU make的实用技巧与挑战

1. 构建过程中的处理器与加速问题

在小型构建任务中,处理器数量与最大加速比存在一定关系。以下是相关数据:
| 处理器数量 | 最大加速比 |
| — | — |
| 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++这类有链接步骤的语言,阿姆达尔定律会显著影响构建时间。通常,所有目标文件在链接步骤之前构建完成,然后需要运行一个(通常很大的)单一链接过程。这个链接过程往往无法并行化,成为构建并行化的限制因素。

2. 让 $(wildcard) 函数递归搜索

内置的 $(wildcard) 函数不是递归的,它只能在单个目录中搜索文件。不过,可以在 $(wildcard) 中使用多个通配符模式来搜索子目录。例如,$(wildcard/.c) 可以查找当前目录所有子目录下的所有 .c 文件。但如果需要搜索任意目录树,就没有内置的方法。

幸运的是,创建 $(wildcard) 的递归版本很容易,代码如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 16:43:25

Linux进程间通信之操作共享内存的命令

System V 共享内存系统管理命令 本文档介绍用于查看和管理 System V 共享内存段的系统命令. 查看共享内存 查看所有共享内存段 ipcs -m输出示例: ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x0000000…

作者头像 李华
网站建设 2026/4/27 12:13:08

肝客音频功放系统实战项目

在高保真音频、智能音响、车载声学及专业扩声系统快速发展的今天,音频功率放大器(功放)作为声音信号从“数字”走向“物理振动”的最后一环,其性能直接决定了听觉体验的上限。传统模拟功放虽成熟可靠,却在效率、体积、…

作者头像 李华
网站建设 2026/4/28 1:39:18

靠谱的污水处理厂清淤施工机构

如何选择靠谱的污水处理厂清淤施工机构:专业服务与安全保障在污水处理厂的日常运营与维护中,清淤作业是保障处理效率、防止系统堵塞、确保出水水质达标的关键环节。然而,清淤施工专业性极强,涉及水下作业、污泥处置、设备安全及环…

作者头像 李华
网站建设 2026/4/25 4:30:27

工程技术招标AI软件开发

工程技术招标AI软件开发全指南:AI赋能招投标全流程的实战路径在工程建设行业数字化、智能化转型的浪潮中,工程技术招标AI软件凭借其智能分析、效率提升、风险预警等核心优势,成为破解传统招投标“流程繁琐、效率低下、评审偏差”等痛点的关键…

作者头像 李华
网站建设 2026/4/26 1:06:54

Kotaemon溯源链接生成:点击直达原文出处

Kotaemon溯源链接生成:点击直达原文出处 在智能问答系统日益普及的今天,一个看似准确的回答可能隐藏着致命的风险——它可能是模型“凭空捏造”的。这种现象被称作“幻觉”,在金融、医疗、法律等高敏感领域尤为危险。用户需要的不只是答案&a…

作者头像 李华
网站建设 2026/4/25 8:24:53

基于微信小程序的在线家庭烹饪系统毕业设计

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于微信小程序的在线家庭烹饪系统,以满足现代家庭在烹饪过程中的需求。具体研究目的如下: 首先&#xff0…

作者头像 李华