如何获取特定头文件的绝对路径?

时间:2013-02-28 21:39:29

标签: c unix

我有一个C文件,其中包含一些#include头文件说明。我知道当我用gcc编译C文件时,编译器会在环境变量.h中包含的路径中查找$CPATH个文件。如何获取特定.h文件的绝对路径? (我更喜欢没有编译的路径)

2 个答案:

答案 0 :(得分:1)

如果使用-E进行编译,您将获得预处理器输出,并且所有包含的文件都将具有完整路径。例如,在下文中,文件'file'将包含预处理的输出:

gcc -E -o file file.c

答案 1 :(得分:0)

这有点像黑客:

cpp -MD file.c | sed -n '/\.h"/s/.*"\(.*\)".*/\1/p' | sort -u

显然取决于cpp的输出格式。 (以上适用于gnu cpp 3.4.6) 这给出了所有包含文件的完整路径。通过另一个过滤器来娱乐它,以减少输出到你关心的特定标题。