c linux gcc c-preprocessor

Averiguar qué incluye la ruta de GCC es



linux c-preprocessor (2)

El comando

echo | gcc -E -Wp,-v -

mostrará la ruta de inclusión en uso.

Esta pregunta ya tiene una respuesta aquí:

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

De acuerdo con http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html algunos de los componentes involucran la arquitectura de la CPU y la versión de GCC; este ú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 asumiendo que el programa de uno se está compilando con GCC podría ser otra opción, pero requeriría depender de esa suposición.

¿Cuál es la forma recomendada de hacerlo?


No estoy seguro de a qué te refieres 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