作用:生成源文件的依赖关系,包含了该源文件所有的依赖,默认会发送到标准输出(stdout)。
示例1:在ubuntu中,新建如下main.c、main.h、head1.h、head2.h文件。
main.c文件:
#include <stdio.h>
#include "main.h"
void main(void)
{
printf("Hello word!\r\n");
}
main.h文件:
#include "head1.h"
#include "head2.h"
head1.h、head2.h都是空的头文件。
在控制台执行gcc -M main.c命令,输出如下。
user@ubuntu:~/*path*$ gcc -M main.c
main.o: main.c /usr/include/stdc-predef.h /usr/include/stdio.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h \
/usr/include/x86_64-linux-gnu/bits/types/FILE.h \
/usr/include/x86_64-linux-gnu/bits/libio.h \
/usr/include/x86_64-linux-gnu/bits/_G_config.h \
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h main.h head1.h head2.h
作用:生成源文件的依赖关系,不包含标准系统头文件的依赖,默认会发送到标准输出(stdout)。
示例:同示例1代码。
在控制台执行gcc -MM main.c命令,输出如下。
user@ubuntu:~/*path*$ gcc -MM main.c
main.o: main.c main.h head1.h head2.h
作用:生成源文件的依赖关系,包含了该源文件所有的依赖,输出到一个.d后缀的文件中。
示例:同示例1。
在控制台执行gcc -MD main.c命令,将在同级目录生成main.d文件,该文件的内容和-M选项输出的内容一致。
作用:生成源文件的依赖关系,不包含标准系统头文件的依赖,输出到一个.d后缀的文件中。
示例:同示例1。
在控制台执行gcc -MMD main.c命令,将在同级目录生成main.d文件,该文件的内容和-MM选项输出的内容一致。
[1] Using the GNU Compiler Collection For gcc version 9.2.1 (GNU Tools for Arm Embedded Processors 9-2019-q4-major)