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

10286
sundar

Я пытаюсь установить модуль (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.

5
Я думаю, что gcc вызывает другие программы и не передает им параметры -I ... golimar 11 лет назад 0

2 ответа на вопрос

10
TuAmigo

This was fixed by installing libcrypt-devel.

Then everything worked just fine... So problem solved!

This explains it better: Re: Difficult compiling Package::Stash::XS

4
sundar

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

Обратите внимание, что пользователю бесполезно читать «установка нескольких библиотек, связанных с шифрованием». Полезно прочитать "установка` libcrypt-devel` " Rob Hall 10 лет назад 2
@RobHall Спасибо за упоминание библиотеки. Должно быть, я написал это так, потому что я просто вышел и установил то, что в названии было «склепа», и не знал точно, какой из них помог. sundar 10 лет назад 1
Пакет Cygwins `gcc-g ++` должен был быть установлен в моем случае (вместе с `gcc-core` и` make`) Kjetil S. 6 лет назад 0