命令速查toolchain
make:按依赖关系执行构建
使用 GNU make 根据 Makefile 中的目标、先决条件和配方增量构建项目。
make 读取 Makefile 中的依赖关系和配方,根据文件时间戳判断哪些目标需要更新,再执行相应命令。它不仅能编译程序,也能描述其他可重复的文件生成任务。
make [选项] [变量=值] [目标 ...]| 参数 | 作用 |
|---|---|
目标 |
构建指定目标;省略时使用默认目标。 |
-f 文件 |
读取指定 Makefile。 |
-C 目录 |
进入指定目录后运行。 |
-n |
显示计划执行的配方,通常不执行它们。 |
-j 数量 |
并行执行指定数量的任务。 |
变量=值 |
从命令行覆盖 Makefile 变量。 |
先查看计划,再构建指定目标:
make -n allmake all为支持 CC 变量的 Makefile 指定编译器:
make CC=gccmake 成功时退出状态为 0;遇到错误通常返回 2。
风险与注意事项
Section titled “风险与注意事项”- Makefile 配方可以执行任意 Shell 命令;运行来源不明的项目等同于运行来源不明的脚本。
make -n是检查辅助工具,不是安全沙箱;递归构建等特殊配方仍可能执行。make clean没有统一实现,删除范围完全由项目定义,执行前应先阅读对应规则。- 并行构建会暴露未正确声明的依赖;失败时可先去掉
-j复现。
本页描述 GNU make。BSD make 与 GNU make 的语法和扩展并不完全兼容;项目若明确要求 GNU make,不应假定任意 make 实现都可替代。
- 命令:gcc
- 概念:交叉编译工具链
- 实战:为 Raspberry Pi 交叉编译最小程序