找出GCC包含的path是
我试图以编程方式在Linux上find#include
path,据我所知,实际上意味着findGCC认为它是什么。 (这是真的吗?Clang是怎么做到的?)
根据http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html,一些组件涉及CPU架构和GCC版本; 后者似乎特别棘手; 我猜想可以通过运行gcc --version
和parsing输出(或者gcc -v
)来获得,但是这样看起来似乎不够好,最坏的情况是脆弱的。 假设你的程序正在用GCC进行编译,那么在代码中做这个操作可能是另外一个select,但是这需要依赖于这个假设。
推荐的方法是什么?
命令
echo | gcc -E -Wp,-v -
将显示正在使用的包含path。
我不确定你的意思是通过推荐的方式来find包含path。 标准方式如下(对于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