news 2026/9/3 14:34:12

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/9/2 23:11:15

5个简单步骤:SQLCoder-7B-2模型快速入门完整指南

5个简单步骤:SQLCoder-7B-2模型快速入门完整指南 【免费下载链接】sqlcoder-7b-2 项目地址: https://ai.gitcode.com/hf_mirrors/defog/sqlcoder-7b-2 想要让AI帮你自动生成SQL查询语句吗?SQLCoder-7B-2模型就是你的理想选择!这款基于…

作者头像 李华
网站建设 2026/9/4 7:43:47

软件日常开发、管理、交付文档合集

项目交付文档 项目详细调研计划编写规范 项目详细调研报告编写规范 软件需求规格说明书评审规范 软件需求规格说明 产品检查单 工程评审 软件标准过程集 系统测试管理规程 四)项目管理计划 项目管理系统实施项目管理童程 项目交付文档 需求管理规程 信创等保资料 项目详细调研大…

作者头像 李华
网站建设 2026/9/4 5:07:16

Univer表格数据质量控制与智能可视化:5个高效实践方案

Univer表格数据质量控制与智能可视化:5个高效实践方案 【免费下载链接】univer Univer is a set of enterprise document and data collaboration solutions, including spreadsheets, documents, and slides. The highly extensible design allows developers to c…

作者头像 李华
网站建设 2026/9/4 7:32:07

子网掩码初识

子网掩码详解 IP地址形式 子网未划分:IP地址主机号网络号子网划分:IP地址主机号网络号子网号 处于同一网络号的IP地址是本地网络,反之就是远程网络IP地址和子网掩码为了用户理解方便,都以点分十进制的形式展现出来 子网掩码 子网掩…

作者头像 李华
网站建设 2026/9/2 21:29:49

内网渗透靶场实操清单(基于 Vulhub+Metasploitable 2)

本清单以 “外网突破→内网信息收集→横向移动→权限提升→持久化” 为核心流程,使用 Kali Linux 作为攻击机,Metasploitable 2(Linux 靶机) Vulhub Windows 域环境靶机作为目标,全程手把手指导。 一、 靶场环境搭建 …

作者头像 李华