gcc kann die Header-Datei nicht finden, obwohl der Pfad in -I enthalten ist

10336
sundar

Ich versuche, ein Modul (Package :: Stash :: XS) über cpanm zu installieren, die Installation schlägt jedoch aufgrund eines gcc-Fehlers fehl. Der Befehl

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 

schlägt mit dem Fehler fehl:

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

an der Linie

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

Die Datei EXTERN.h ist jedoch in der Datei -I /usr/lib/perl5/5.14/x86_64-cygwin-threads/CORE enthalten:

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

Was könnte das Problem sein und wie kann ich die Zusammenstellung erfolgreich machen? Ich habe versucht, die Option -I in -iquote zu ändern (obwohl gcc manual nicht sagt, dass doppelte Anführungszeichen auch die Verwendung von -I enthalten), aber das hilft nicht. Mein erster Gedanke war, dass es sich um ein Erlaubnisproblem handelte, aber dies ist Cygwin, und cpanm läuft wie ich und ich habe Lesezugriff auf EXTERN.h und Exec-Zugriff auf das CORE-Verzeichnis.

5
Ich denke, gcc ruft andere Programme auf und gibt nicht die Parameter -I an sie weiter ... golimar vor 10 Jahren 0

2 Antworten auf die Frage

10
TuAmigo

Dies wurde durch die Installation behoben libcrypt-devel.

Dann hat alles bestens geklappt ... also Problem gelöst!

Das erklärt es besser: Re: Schwieriges Kompilieren von Package :: Stash :: XS

4
sundar

Ok, ich glaube, ich habe das Problem gefunden. Ich führe dies in Cygwin wie erwähnt aus und es scheint, als hätte Cygwin versucht, Windows-Erdbeer-Perls gcc zu verwenden, da sein eigener gcc nicht installiert wurde! Das Windows gcc hatte wahrscheinlich Probleme mit einem Cygwin-Pfad, daher der seltsame Fehler. Ich habe jetzt Cygwins gcc installiert und dieses Problem ist weg. Als nächstes beklagte er sich über ein <crypt.h>Problem, das ebenfalls durch die Installation einiger Bibliotheken zur Verschlüsselung im Cygwin-Setup-Dialog gelöst wurde.

Beachten Sie, dass es nicht nützlich ist, als Benutzer zu lesen "Installieren einiger Bibliotheken mit Verschlüsselung". Es ist nützlich, "libcrypt-devel" zu installieren. Rob Hall vor 9 Jahren 2
@RobHall Danke für die Erwähnung der Bibliothek. Ich muss es so geschrieben haben, weil ich einfach rausging und installierte, was "crypt" im Namen hatte, und nicht wußte, was genau half. sundar vor 9 Jahren 1
Cygwins `gcc-g ++` Paket musste in meinem Fall installiert werden (zusammen mit `gcc-core` und` make`) Kjetil S. vor 6 Jahren 0