Yagarto: No incluir los archivos de encabezado estándar

Estoy usando una versión recompilada de la cadena de herramientas GCC para la plataforma ARM, llamada Yagarto. El compilador viene con una "biblioteca estándar" llamada Newlib y "encabezados estándar", como stdio.h.

Para mi proyecto, la licencia de Newlib no es adecuada, por lo que he usado una printffunción de otro lugar. El problema es que parece que los archivos de encabezado incorporados están incluidos implícitamente en cada archivo .c, y aparece el siguiente error:

c:/yagarto4.6.0/lib/gcc/../../arm-none-eabi/sys-include/stdio.h:182:5: error: tipos en conflicto para 'printf'

¿Hay alguna forma de que Yagarto no cargue las bibliotecas estándar de forma predeterminada?

¿Puede simplemente eliminar/cambiar el nombre de las bibliotecas estándar originales?

Respuestas (1)

Desde la página del manual de GCC:

-nostdinc No busca archivos de encabezado en los directorios del sistema estándar. Solo se buscan los directorios que ha especificado con las opciones -I (y el directorio del archivo actual, si corresponde).

-nostdinc++ No busque archivos de encabezado en los directorios estándar específicos de C++, pero sí busque en los otros directorios estándar. (Esta opción se usa al construir la biblioteca de C++).

Otras opciones serían hacer referencia explícita a los archivos de encabezado que desea incluir, especificando su directorio con -I (que se busca antes de que se incluya el estándar). O simplemente puede eliminar (o mover) el directorio de encabezados con licencia incompatible de la instalación.

También puede querer -nostdlib para el enlazador.

Gracias. ¿Sabes si hay una manera de ignorar solo el encabezado para printf?
Si está tratando de evitar la biblioteca, ¿por qué quiere sus encabezados? Aunque solo sea por confiabilidad técnica, creo que desearía excluir por completo la dependencia de ellos, a favor del suyo propio con contenido que puede rastrear más fácilmente.