gcc não localizando o arquivo de cabeçalho, embora seu caminho tenha sido incluído com -I

6

Estou tentando instalar um módulo (Package :: Stash :: XS) via cpanm, mas a instalação está falhando devido a um erro do gcc. O comando

gcc -c    -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -fno-strict-aliasing -pipe -fstack-protector -DUSEIMPORTLIB -O3    -DVERSION=\"0.28\"  -DXS_VERSION=\"0.28\"  "-I/usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE"   XS.c

falha com o erro:

XS.xs:1:20: fatal error: EXTERN.h: No such file or directory
compilation terminated.

na linha

#line 1 "XS.xs"
#include "EXTERN.h"

No entanto, o arquivo EXTERN.h existe no -I incluído /usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE:

$ ls /usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE/E*
/usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE/EXTERN.h

Qual poderia ser o problema e como posso fazer a compilação bem-sucedida? Eu tentei mudar o -I para -quote (embora o manual do gcc diga cotação dupla inclui também eventualmente use -I), mas isso não ajuda. Meu primeiro pensamento foi que era um problema de permissão, mas este é o Cygwin e o cpanm está sendo executado como eu e eu tenho acesso de leitura ao EXTERN.he acesso exec no diretório CORE.

    
por sundar 19.09.2013 / 09:13

2 respostas

5

Ok, acredito que encontrei o problema. Estou executando isso no Cygwin, como mencionado, e parece que o Cygwin estava tentando usar o gcc do Windows strawberry Perl desde que o próprio gcc não foi instalado! O gcc do Windows provavelmente teve problemas com um caminho de estilo Cygwin, daí o erro estranho. Eu já instalei o gcc do Cygwin e esse problema se foi. Em seguida, ele reclamou sobre um <crypt.h> , que também foi resolvido instalando libcrypt-devel do diálogo de configuração do Cygwin.

    
por 20.09.2013 / 04:58
10

Isso foi corrigido com a instalação de libcrypt-devel .

Então tudo deu certo ... Então resolvemos o problema!

Isso explica melhor: Re: compilação difícil do pacote :: Stash :: XS

    
por 02.04.2014 / 14:20