2009-05-16 6 views
9

Cuando intentoGCC problema de acumulación (limits.h #include_next)

$ make depend -f gcc.mak

un middleware en mi máquina Ubuntu me sale 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 sus límites.h hayan sido sobrescritos por otro paquete? ¿Necesito otro paquete de -dev? O se requiere una variable de entorno; quizás esto podría ser evitado de alguna otra manera?

+0

Esto debería funcionar como está. ¿Qué ves cuando agregas '-v' a tu comando de compilación? –

+0

Supongo que limits.h falta (o se sobrescribe). -v me da GNU Make 3.81 Objetivo: x86_64-linux-gnu gcc versión 4.3.3 (Ubuntu 4.3.3-5ubuntu4) –

+0

El otro limit.h que puede encontrar es el que debe ser incluido por include_next . ¿Puede agregar -v a la línea de comando gcc que hace la compilación anómala, es decir, gcc -v -c foo.c? La parte interesante de su producción sería # include <...> búsqueda comienza aquí: /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/4.3.3/include /usr/lib/gcc/x86_64-linux-gnu/4.3.3/include-fixed /usr/include Fin de la lista de búsqueda. –

Respuesta

1

el paquete que se necesita es glibc.

+0

Eso suena bien. Lo marcaré como la solución, incluso si no lo he verificado. –

+0

Tengo glibc y sigo recibiendo este error. – Reinderien

+1

Estoy tratando de compilar para Android (así que no glibc como tal) y me sale este error también. No puedo descubrir qué encabezado debería incluir. – Wyatt8740

0

considerar 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).

+0

No tengo ningún otro límite (sensible) .h. Necesito los límites de GCC. H. El que está en include-fixed parece ... apagado. –

0

no me acuerdo exactamente con la resolución más, pero tenía que ver con algún paquete que falta. Después de obtener algunas cosas más, funcionó para mí.

2

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 está documentado en STLport Release Notes. Después de obtener una copia de STLport 5.2.1, la compilación fue exitosa sin interrupciones.

2

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 defecto incluyen directorios a partir de /usr/include

Desde la directiva #include_next significa incluir el siguiente instancia encontrada del archivo de inclusión nombrado en la ruta de búsqueda, esto fallará si no se encuentra otro.

Para mí, la solución fue la de dirigir makedepend a buscar mi compilador cruzado incluye directorios en primer lugar. Hice esto para adaptar la asignación MAKEDEPPROG para incluir la Directiva -I:

MAKEDEPPROG=makedepend -I < path/to/cross-compiler/include-fixed > 

Sugiero la lectura sobre el programa makedepend (de la que no sabía nada antes). Por ejemplo, no era obvio para mí que makedepend no usaría una ruta de búsqueda de entorno. La directiva -I coloca la ruta de búsqueda especificada antes de las rutas predeterminadas de makedepend.

Cuestiones relacionadas