前端之家收集整理的这篇文章主要介绍了
如何产生依赖文件 Linux C programming,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在linux 编程中, makedepend 是一个很重要的工具,它可以根据#include #ifdef #if 等宏定义
获取源
文件所要依赖的头
文件并且保存到相应的
文件,从而作为源
文件的预处理来提高
文件编译速度。实际中,有两种
方法获取这种依赖关系,一种是直接 使用makedepend工具,另外一种是通过gcc -C
获取。 我们分别简单介绍二者的使用。 这是一个简单的源
文件,使用来测试va_list的。 /* main.c */ #include <st
dio.h> #include <stddef.h> #include <stdarg.h> int func(char *fmt,...) { char * args; va_list arg; args = (char *)arg; va_start(arg,fmt); printf("%s sizeof(va_list) = %lu %d/n",fmt,sizeof(va_list),'//'); va_end(arg); return 0; } int main(int argc,char *argvs[]) { int b = 1; int c = 0xFFF21334; unsigned int d = c; func("a = %d,b = %d/n",b); printf("%d %d %d/n",c,d,~(d - 1)); return 0; } 1. 使用“gcc -C” 我们看一下makefile
文件 #makefile SOURCES:=$(wildcard *.c) TARGETS:=$(basename $(SOURCES)) CFLAGS += -Wall -DHACK -I/usr/lib/gcc/x86_64-linux-gnu/4.2/include/ CC:=/usr/bin/gcc all: $(TARGETS) depend: $(SOURCES) @for file in $(SOURCES); do / $(CC) $(CFLAGS) -M $$file; / done > dep.mk clean: rm -rf $(TARGETS) *.o dep.mk -include dep.mk 在命令行中输入make depend,那么一个包含依赖关系的dep.mk
文件就
生成了。
内容如下: main.o: main.c /usr/include/st
dio.h /usr/include/features.h / /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h / /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h / /usr/lib/gcc/x86_64-linux-gnu/4.2.3/include/stddef.h / /usr/include/bits/types.h /usr/include/bits/typesizes.h / /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h / /usr/lib/gcc/x86_64-linux-gnu/4.2.3/include/stdarg.h / /usr/include/bits/st
dio_lim.h /usr/include/bits/sys_errlist.h 2 直接在命令行中执行 “makedepend -I/usr/lib/gcc/x86_64-linux-gnu/4.2/include/ main.c”就可以了。然后你可以查看Makefile
文件,在
文件末尾
添加了一些依赖行信息 # DO NOT DELETE main.o: /usr/include/st
dio.h /usr/include/features.h /usr/include/sys/cdefs.h main.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h main.o: /usr/include/gnu/stubs-64.h main.o: /usr/lib/gcc/x86_64-linux-gnu/4.2/include/stddef.h main.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h main.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h main.o: /usr/lib/gcc/x86_64-linux-gnu/4.2/include/stdarg.h main.o: /usr/include/bits/st
dio_lim.h /usr/include/bits/sys_errlist.h 不过虽然二者的目的一样,但是建议使用地一种
方法:1) 它包含相应的非头
文件依赖信息,2)依赖信息独立于makefile
文件 3)无须额外的makedepend命令。
原文链接:https://www.f2er.com/javaschema/288007.html