找出GCC包含的路径是什么

时间:2013-07-30 06:40:20

标签: c linux gcc c-preprocessor

我正在尝试以编程方式在Linux上找到#include路径,据我所知,在实践中意味着找到GCC认为的路径。 (这是真的吗?Clang怎么做?)

根据http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html,一些组件涉及CPU架构和GCC版本;后者尤其显得棘手;我想它可以通过运行gcc --version并解析输出(或gcc -v)来获得,但这看起来不够优雅,最坏的时候也很脆弱。假设一个程序正在使用GCC编译,从一个代码中执行它可能是另一种选择,但它需要取决于该假设。

建议的方法是什么?

2 个答案:

答案 0 :(得分:127)

命令

echo | gcc -E -Wp,-v -

将显示正在使用的包含路径。

答案 1 :(得分:17)

我不确定通过推荐的方式查找包含路径的含义。 标准方式如下(c和c ++):

$ `gcc -print-prog-name=cc1` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C
$ `gcc -print-prog-name=cc1plus` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/x86_64-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
^C