news 2026/5/8 7:05:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

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

菲索光学测试干涉仪

摘 要斐索干涉仪是工业中常见的光学计量设备,它们通常用于光学表面质量的高精度测试。 借助VirtualLab Fusion中的非顺序追迹,我们构建了一个菲索干涉仪,并利用它测试了不同的光学表面,例如圆柱形和球形。 可以看出,产…

作者头像 李华
网站建设 2026/5/7 15:50:59

微信团队自助工具申请辅助验证过程/使用人工解除解封方法都在这里

微信被封不用慌!超详细解封指南避坑技巧,亲测有效日常生活中,微信早已不只是聊天工具,付款结账、工作沟通、转账发红包,几乎方方面面都离不开它。可一旦遇到“限制登录”的提示,瞬间就会让人手足无措——就…

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

FreeRTOS 入门(三十一):多队列按键分发 —— 汽车独立控制实战

目录 一、前言二、汽车任务创建与初始队列问题三、按键分发:简陋实现与弊端四、优雅方案:句柄注册 循环分发五、汽车任务集成:队列创建与注册六、游戏启动:任务调用与运行逻辑七、总结八、下一篇预告九、结尾 一、前言 大家好…

作者头像 李华
网站建设 2026/5/5 10:44:56

你看到什么,决定你成为什么

同一件事,放在不同的人眼里,会变成完全不同的意义。最近,我做了一个 App。 从 0 到 1,一个人,用 AI 辅助开发,完成产品、调试、打包、提交审核,最后成功上架 App Store。当我把它分享出去后&…

作者头像 李华