Выяснение того, что GCC включает путь [дубликат]


этот вопрос уже есть ответ здесь:

Я пытаюсь программно найти #include путь на Linux, который, как я понимаю, на практике означает найти то, что GCC считает его. (Это действительно так? Как это делает Clang это?)

согласно http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html некоторые компоненты включают архитектуру процессора и версию GCC; последнее, в частности, кажется сложным; я полагаю, что это можно получить, запустив gcc --version и разбор вывода (или gcc -v), но это кажется грубым и хрупким, а в худшем. Делаю это в код если программа компилируется с GCC может быть и другой вариант, но он потребует от исходя из этого предположения.

каков рекомендуемый способ сделать это?

2 51

2 ответа:

команда

echo | gcc -E -Wp,-v -

покажет путь включения в использовании.

Я не уверен, что вы подразумеваете под рекомендовано способ найти путь включения. Элемент стандартный путь, как показано ниже (для 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