2013-02-28 54 views
1

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

+0

'找到file.h' – Kevin 2013-02-28 21:42:49

+1

什么UNIX系统是什么?我从来没有遇到过一个带有$ CPATH变量的变量。 – 2013-02-28 21:48:51

+1

@ott,['CPATH'](http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html)长久以来一直是gcc功能。不过,我从来没有见过任何人使用它。 – 2013-02-28 21:51:51

回答

0

这是一个黑客位的:

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

,并明确取决于cpp输出格式。 (上面的作品为gnu cpp 3.4.6) 这给出了所有包含文件的完整路径。通过另一个筛选器来减少输出到您关心的特定标题。

+0

现在有一段时间,没有一个单独的'cpp'与GCC。 – vonbrand 2013-03-01 00:31:10

1

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

gcc -E -o file file.c 
相关问题