news 2026/4/18 8:41:55

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

作者头像

张小明

前端开发工程师

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

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

贪吃蛇的java代码实现

实验六:贪吃蛇bodyObjpackage snake;import java.awt.*;public class bodyObj extends GameObj {public bodyObj(Image imd, int x, int y, GameWin frame) {super(imd, x, y, frame);}public void paintSelf(Graphics g) {super.paintSelf(g);} }FoodObjpackage sn…

作者头像 李华
网站建设 2026/4/18 8:36:51

打开软件出现找不到vcruntime140d.dll文件的情况 下载修复解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/17 19:10:39

leetcode 困难题 745.Prefix and Suffix Search 前缀和后缀搜索

Problem: 745. Prefix and Suffix Search 前缀和后缀搜索 解题过程 ASCII内,"{"刚好在"z"后面,所以算是特殊字符,按照提示拼起来,然后放入到字典树当中去,并且在{后面的前缀需要求出最大的索引 查…

作者头像 李华
网站建设 2026/4/16 17:57:59

【奶茶Beta专项】【LVGL9.4源码分析】09-core-global全局核心管理

【奶茶Beta专项】【LVGL9.4源码分析】09-core-global全局核心管理 1 概述1.1 文档目的1.2 代码版本与范围 2 设计意图与总体定位2.1 lv_global 在 LVGL 中扮演的角色2.2 全局上下文结构与访问方式2.3 与 lv_init/lv_deinit 以及对象系统的关系 3 使用方式与典型调用场景3.1 常规…

作者头像 李华
网站建设 2026/4/16 15:45:46

一款开源的小红书下载工具

前言一款开源的小红书平台的下载工具,这算是个老软件了,因为我23年的时候我就用过这款软件,近期又看到了,说明作者一直在维护更新,所以分享一下。软件介绍1、软件界面看起来比较杂乱吗,其实操作非常简单&am…

作者头像 李华