Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Команда

echo | gcc -E -Wp,-v -

покажет используемый путь include.

Ответ 2

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