Averiguar qué ruta de inclusión de GCC es

Estoy tratando de encontrar programáticamente la ruta #include en Linux, que tal como la entiendo, en la práctica significa encontrar lo que GCC considera que es. (¿Es eso bastante cierto? ¿Cómo lo hace Clang?)

Según http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html, algunos de los componentes involucran la architecture de la CPU y la versión GCC; el último, en particular, parece complicado; Supongo que podría obtenerse ejecutando gcc --version y analizando la salida (o gcc -v ), pero esto parece poco elegante en el mejor de los casos y frágil en el peor. Hacerlo desde el código de uno, suponiendo que el progtwig se está comstackndo con GCC podría ser otra opción, pero requeriría depender de esa suposición.

¿Cuál es la forma recomendada de hacerlo?

El comando

 echo | gcc -E -Wp,-v - 

mostrará la ruta de inclusión en uso.

No estoy seguro de lo que quiere decir con la forma recomendada de encontrar la ruta de inclusión. La forma estándar es la siguiente (para c y 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