在Linux系统中,make
是一个常用的构建工具,用于自动化编译和链接程序,它通过读取名为Makefile
的文件来了解如何构建项目,以下是关于make
命令的详细解释:
基本用法
(图片来源网络,侵删)
make [options] [targets]
options: 可选参数,用于修改make
的行为。
targets: 目标文件或目标名称,指定要构建的具体部分。
常用选项
选项 | 描述 |
-f | 指定一个不同的 Makefile 文件 |
-C | 切换到指定的目录再执行 make |
-j [jobs] | 并行执行多个任务,可以加快构建速度 |
--output-sync | 确保输出是同步的,适用于并行构建时 |
-n | 显示将要执行的命令但不实际执行 |
-k | 继续执行即使有错误发生 |
-i | 忽略命令执行中的错误 |
-s | 静默模式,不显示命令执行过程 |
-d | 打印调试信息 |
-q | 查询模式,只检查依赖关系而不执行任何操作 |
-r | 禁用内置规则 |
-R | 禁用所有隐含规则 |
-S | 禁用所有后缀规则 |
-p | 打印内部变量和规则 |
-h | 显示帮助信息 |
--trace | 跟踪 makefile 的执行过程 |
--warn-undefined-variables | 警告未定义的变量使用情况 |
示例
1、简单构建
(图片来源网络,侵删)
make
这将读取当前目录下的Makefile
并执行默认目标。
2、指定目标
make target_name
如果Makefile
中有一个目标叫all
,你可以这样运行:
make all
3、指定 Makefile
make -f MyMakefile
使用自定义的MyMakefile
而不是默认的Makefile
。
(图片来源网络,侵删)
4、并行构建
make -j4
使用4个并行任务来加速构建过程。
5、查询模式
make -q
仅检查依赖关系而不实际执行任何命令。
6、显示命令但不执行
make -n
显示将要执行的命令,但不会实际执行它们。
Makefile 示例
一个简单的Makefile
可能如下所示:
CC = gcc CFLAGS = -Wall -g TARGET = myprogram SRCS = main.c utils.c OBJS = $(SRCS:.c=.o) all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $(TARGET) $(OBJS) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -f $(OBJS) $(TARGET)
在这个例子中:
CC
和CFLAGS
是变量。
all
是默认目标,依赖于myprogram
。
myprogram
依赖于对象文件main.o
和utils.o
。
%.o: %.c
是一个模式规则,用于从.c
文件生成.o
文件。
clean
是一个伪目标,用于清理生成的文件。
make
是一个非常强大的工具,通过合理使用其选项和编写合适的Makefile
,可以显著提高项目的构建效率,希望以上内容能帮助你更好地理解和使用make
命令。
各位小伙伴们,我刚刚为大家分享了有关linux 编译命令make的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/82249.html