GCC construir problema (limits.h #include_next)
Pregunta
Cuando intento
$ make depend -f gcc.mak
un middleware en mi máquina Ubuntu consigo este
/usr/include/../include/limits.h:125:26: error: no include path in which to search for limits.h
Este es el contenido de todo limits.h: 125:
/* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ #if defined __GNUC__ && !defined _GCC_LIMITS_H_ /* `_GCC_LIMITS_H_' is what GCC's file defines. */ # include_next <limits.h> #endif
He intentado establecer
$ export INCLUDE=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/ $ export C_INCLUDE_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/ $ export CPLUS_INCLUDE_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.3/include-fixed/
(que es donde he encontrado otra limits.h en mi sistema). Ya tengo instalado libc6-dev, podría ser que su limits.h ha sido sobrescrito por otro paquete? ¿Es necesario otro paquete -dev? O es una variable de entorno requerida; Tal vez esto podría ser evitado de alguna otra manera?
Solución
el paquete que se necesita es glibc.
Otros consejos
Me había enfrentado a mi problema con la compilación con STLport 5.1.5, pero parece que el problema se soluciona es STLport 5.2.0. El problema se documenta en la versión STLport Notas . Después de conseguir una copia de STLport 5.2.1, la compilación fue exitosa y sin contratiempos.
Me he encontrado con este problema en hacer una compilación cruzada. Cuando se ejecuta un 'make depend' Makefile invocará el programa makedepend como se ve desde esta asignación:
MAKEDEPPROG=makedepend
makedepend sólo se busca en algún incumplimiento directorios de inclusión a partir de /usr/include
Dado que la Directiva #include_next
significa incluir la siguiente encontrado instancia de la llamada archivo de inclusión en la ruta de búsqueda, se producirá un error si no se encuentra otro.
Para mí, la solución era dirigir makedepend a buscar mi compilador cruzado incluye directorios en primer lugar. Hice esto cambiando el MAKEDEPPROG
asignación para incluir la directiva -I
:
MAKEDEPPROG=makedepend -I < path/to/cross-compiler/include-fixed >
Le sugiero leer sobre el programa makedepend (de la que no sabía nada antes). Por ejemplo, no era obvio para mí que makedepend no utilizar una ruta de búsqueda medio ambiente. El <=> Directiva pone la ruta de búsqueda especificado antes de rutas predeterminadas de makedepend.
Considere el uso de #include_next <limits.h>
(extensión gcc) con el fin de obligar a gcc que mirar el lado limits.h
encontrado en la ruta de inclusión (que debe ser la copia del conjunto de herramientas).
No recuerdo exactamente con la resolución más, pero tenía que ver con algún paquete que falta. Después de apt-conseguir algunas cosas más, que trabajó para mí.