首页 文章

找出GCC包含的路径是[重复]

提问于
浏览
51

这个问题在这里已有答案:

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

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

建议的方法是什么?

2 回答

  • 113

    命令

    echo | gcc -E -Wp,-v -
    

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

  • 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
    

相关问题