Cuando compilo un archivo fuente muy simple con gcc, no tengo que especificar la ruta a los archivos de inclusión estándar como stdio o stdlib.
¿Cómo sabe GCC cómo encontrar estos archivos?
¿Tiene la /usr/include
ruta cableada en su interior o obtendrá las rutas de otros componentes del sistema operativo?
cpp -v /dev/null -o /dev/null
Hay un comando con una salida más corta, que permite cortar automáticamente los parches de inclusión de las líneas, comenzando con un solo espacio:
El crédito va a la portada de libc ++ .
fuente
Aunque estoy de acuerdo con la respuesta de Ihor Kaharlichenko para considerar C ++ y con la respuesta de abyss.7 para la compacidad de su salida, todavía están incompletas para las versiones de múltiples arcos de gcc porque el procesamiento de entrada depende de los parámetros y macros de la línea de comandos.
Ejemplo:
echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -specs=nano.specs -mcpu=cortex-m4 -march=armv7e-m -mthumb -mfloat-abi=soft -x c++ -E -Wp,-v\ - -fsyntax-only
rendimientosmientras que los
echo | /opt/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-g++ -x c++ -E -Wp,-v - -fsyntax-only
rendimientosLa primera invocación utiliza
newlib
(ver líneas 1 y 3 de la salida), la segunda va con el estándar incluye. Los archivos comunes al final de la lista son un ejemplo para el uso deinclude_next
.En pocas palabras: considere siempre todas las macros y opciones de compilación al imprimir los directorios de inclusión.
fuente
Simplemente ejecute lo siguiente para enumerar las rutas de búsqueda predeterminadas:
fuente
cc1
por lo general, no se puede llamar directamente porque es un comando interno que no está en la RUTA. Tal vez desee editar su respuesta para describir dónde encontrar el archivo.