主要观点:许多人因xz 后门开始讨论 Linux 打包工具及构建系统状态,作为 Void Linux 的维护者和打包者,提出 autoconf 的正确之处。
关键信息:
- 提供标准化接口,Void Linux 中 GNU configure 构建风格最流行,打包者不喜欢自定义与已知不同的构建系统,需遵循约定,如支持 staged 安装(DESTDIR)。
- 基于检查功能,检查式配置是软件未来能正常工作的唯一方式,检查应合理,避免不必要检查。
- 可覆盖,有选项可覆盖检查结果,方便处理特殊情况,如库安装位置特殊。
- config.log 告知发生了什么,其他系统多只告知失败,autoconf 的 config.log 有时有助于调试检查。
- 支持交叉编译和主机/目标分离,autotools 是支持交叉编译的较好系统,定制构建系统常缺乏此功能。
- 运行时依赖少,通常基本 POSIX shell 环境即可运行 configure 脚本,对引导系统的包很重要,对非直接相关包不是关键特征。
重要细节: - 在 Void Linux 中约 14300 个包模板中有 2250 个使用 GNU configure 构建风格,还有 120 个使用类似的通用 configure 构建风格。
- 代码假设 C99 环境时不必检查所用函数是否可用,不需要检查
sizeof char
等。 - 交叉编译原则上不难,但构建系统需知道代码运行在目标上,编译时需区分主机和目标。
- 如构建系统需要 Python 则需先编译 Python 及其依赖。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。