GCC problema de construção (#include_next limits.h)
Pergunta
Quando tento
$ make depend -f gcc.mak
a middleware na minha máquina Ubuntu eu recebo este
/usr/include/../include/limits.h:125:26: error: no include path in which to search for limits.h
Este é o conteúdo ao redor 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
Eu tentei configuração
$ 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 é onde eu encontrei um outro limits.h no meu sistema). Já tenho libc6-dev instalado, pode ser que a sua limits.h foi substituído por um outro pacote? Preciso de outro pacote -dev? Ou é uma variável de ambiente necessário; talvez isso poderia ser evitado de alguma outra forma?
Solução
o pacote que você precisa é glibc.
Outras dicas
Eu havia enfrentado meu problema com a compilação com STLport 5.1.5, mas parece que o problema é corrigido é STLport 5.2.0. O problema está documentado no STLport Release Notes . Depois de obter uma cópia do STLport 5.2.1, a compilação passou com sucesso, sem soluços.
Eu encontrei este problema fazendo um cross-compilação. Quando você executar um 'make dependem' do Makefile irá invocar o programa makedepend como visto a partir desta atribuição:
MAKEDEPPROG=makedepend
makedepend só procura algum padrão incluem diretórios começando com /usr/include
Uma vez que os meios directiva #include_next
para incluir a próxima instância encontrados do chamado arquivo de inclusão no caminho de procura, este irá falhar se outro não for encontrado.
Para mim, a solução foi makedepend dirigir para procurar o meu cross-compilador incluir diretórios em primeiro lugar. Eu fiz isso por alteração da atribuição MAKEDEPPROG
para incluir a directiva -I
:
MAKEDEPPROG=makedepend -I < path/to/cross-compiler/include-fixed >
sugiro a leitura sobre o programa makedepend (sobre o qual eu não sabia nada antes). Por exemplo, não era óbvio para mim que makedepend não iria usar um caminho de pesquisa de ambiente. A directiva -I
coloca o caminho de pesquisa especificado antes caminhos padrão de makedepend.
Considere o uso de #include_next <limits.h>
(extensão gcc), a fim de vigor gcc olhar para a próxima limits.h
encontrada no caminho de inclusão (que deve ser a cópia do conjunto de ferramentas).
Eu não me lembro exatamente a resolução mais, mas tinha a ver com algum pacote faltando. Depois apt-obter mais algumas coisas, ele trabalhou para mim.