GCC的命令参数有很多,下面主要介绍几个M相关的:
###-M
生成文件关联的信息。包含目标文件所依赖的所有源代码,下面是测试log:
jack@jxes-VirtualBox:~/samba_share/tmp$ vim test.c
jack@jxes-VirtualBox:~/samba_share/tmp$ gcc -M test.c
test.o: test.c /usr/include/stdc-predef.h /usr/include/stdio.h \
/usr/include/features.h /usr/include/i386-linux-gnu/sys/cdefs.h \
/usr/include/i386-linux-gnu/bits/wordsize.h \
/usr/include/i386-linux-gnu/gnu/stubs.h \
/usr/include/i386-linux-gnu/gnu/stubs-32.h \
/usr/lib/gcc/i686-linux-gnu/5/include/stddef.h \
/usr/include/i386-linux-gnu/bits/types.h \
/usr/include/i386-linux-gnu/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/i686-linux-gnu/5/include/stdarg.h \
/usr/include/i386-linux-gnu/bits/stdio_lim.h \
/usr/include/i386-linux-gnu/bits/sys_errlist.h
###-MM
和上面的那个一样,但是它将忽略由#include造成的依赖关系。
jack@jxes-VirtualBox:~/samba_share/tmp$ gcc -MM test.c
test.o: test.c
###-MMD
和-MM相同,但是输出将导入到.d的文件里面:
jack@jxes-VirtualBox:~/samba_share/tmp$ gcc -MMD test.c -o test
jack@jxes-VirtualBox:~/samba_share/tmp$ ll
total 24
drwxrwxr-x 2 jack jack 4096 7月 17 10:42 ./
drwxr-xr-x 6 jack jack 4096 7月 17 10:38 ../
-rwxrwxr-x 1 jack jack 7344 7月 17 10:42 test*
-rw-rw-r-- 1 jack jack 87 7月 17 10:39 test.c
-rw-rw-r-- 1 jack jack 13 7月 17 10:42 test.d //test.d为导出文件
jack@jxes-VirtualBox:~/samba_share/tmp$ rm test.d
jack@jxe