gcc не находит заголовочный файл, хотя его путь включен с -I

Я пытаюсь установить модуль (Package::Stash::XS) через cpanm, но установка не удалась из-за ошибки gcc. Команда

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

не удается с ошибкой:

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

на линии

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

Тем не менее, файл EXTERN.h существует в -I включенном /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

В чем может быть проблема, и как я могу сделать компиляцию успешной? Я попытался изменить -I на -iquote (хотя руководство gcc говорит, что двойные кавычки также в конечном итоге используют -I), но это не помогает. Сначала я подумал, что это проблема с правами доступа, но это Cygwin, и cpanm работает как я, и у меня есть доступ на чтение к файлу EXTERN.h и доступ exec к каталогу CORE.

2 ответа

Решение

Хорошо, я считаю, что нашел проблему. Как я уже упоминал, я запускаю это в Cygwin, и похоже, что Cygwin пытался использовать Windows клубничный Perl gcc, поскольку его собственный gcc не был установлен! В Windows gcc, вероятно, были проблемы с путем в стиле Cygwin, поэтому возникла странная ошибка. Я сейчас установил gcc Cygwin, и эта проблема исчезла. Затем он пожаловался на <crypt.h>, это тоже было решено путем установки libcrypt-devel из диалогового окна настройки Cygwin.

Это было исправлено установкой libcrypt-devel,

Тогда все работало просто отлично... Так что проблема решена!

Это объясняет это лучше: Re: сложная компиляция Package::Stash::XS

Другие вопросы по тегам