Yagarto: no incluya los archivos de encabezado estándar

0

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 función printf de otra parte. 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?

    
pregunta Randomblue

1 respuesta

3

Desde la página de manual de GCC:

  

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

     

-nostdinc ++              No busque archivos de encabezado en el estándar específico de C ++              directorios, pero todavía buscar los otros directorios estándar.              (Esta opción se utiliza al crear la biblioteca 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 licencias incompatibles de la instalación.

También puede desear -nostdlib para el vinculador.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas