并行./configure - tavianator.com

主要观点:2025 年,./configure在 24 核 CPU 上仅能使用其中一个的 69%,导致构建配置时间约为实际构建时间的 13.5 倍;./configure脚本本质上是顺序编写,多数测试可并行进行,多数构建配置脚本如 Autoconf、CMake、Meson 等不能并行化;通过创建configure.mkflags.shdefine.sh等文件,利用make工具实现并行化配置,生成Makefileconfig.h,提高配置效率。
关键信息:

  • ./configure配置时间长,如某随机项目配置时间约为构建时间的 13.5 倍。
  • 多数构建配置脚本顺序编写,可并行测试未利用。
  • configure.mk通过各种 makefile 片段实现并行化配置,如TRY_CC等。
  • flags.sh用于检查编译器支持的标志。
  • define.sh用于生成config.h中的宏定义。
    重要细节:
  • 示例中configure.mk通过多个目标生成不同的 makefile 片段,如deps.mkWall.mk等,可并行运行。
  • config.h通过测试编译简单 C 程序生成,如have_statx.c等,header.mk用于生成和合并这些小文件。
  • 最后用configure脚本包装configure.mk,方便用户运行。在示例中,新的构建系统在bfs项目中性能提升显著,如配置时间从 1.44s + 1.78s 降至 0.401s,构建时间从 1.89s + 0.64s 降至 0.310s。
阅读 11
0 条评论