Выяснение того, что GCC включает путь [дубликат]
этот вопрос уже есть ответ здесь:
- каковы каталоги GCC по умолчанию? 3 ответы
Я пытаюсь программно найти #include
путь на Linux, который, как я понимаю, на практике означает найти то, что GCC считает его. (Это действительно так? Как это делает Clang это?)
согласно http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html некоторые компоненты включают архитектуру процессора и версию GCC; последнее, в частности, кажется сложным; я полагаю, что это можно получить, запустив gcc --version
и разбор вывода (или gcc -v
), но это кажется грубым и хрупким, а в худшем. Делаю это в код если программа компилируется с GCC может быть и другой вариант, но он потребует от исходя из этого предположения.
каков рекомендуемый способ сделать это?
2 ответа:
Я не уверен, что вы подразумеваете под рекомендовано способ найти путь включения. Элемент стандартный путь, как показано ниже (для 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