2016-07-23 7 views
0

Ich bin neu in Perl, aber ich habe ein Perl - Skript, das viele Module benötigt, die alle im Ordner lib/gefunden werden, wenn ich versuche, das Skript auszuführen und es zu laden Module (verwenden Sie x;) das Skript schlägt beim Aufrufen von Dynaloader x fehl; Sprichwort kann keine ladbaren Objekte für Module finden x @INC, dann habe ich herausgefunden, dass diese Module gemeinsame Objekte (.so) Dateien haben, die dynaloader nicht finden kann und seine Namen sind alle in der Form libx.so und sie befinden sich im selben Ordner des. Pm-Dateien .. so ist die Frage, wie kann ich Dynaloader laden die Module und dort gemeinsame Bibliotheken.Perl - DynaLoader kann keine ladbaren Objekte finden

Jede Hilfe wäre wünschenswert .. ps.: -Ich führe das Skript über Cygwin. -diese Module sind Locale-Module, ich habe nicht die Makefile.pl für sie und ich kann es auch nicht.

+0

Sie sicher, dass die gemeinsam genutzte Objekte (.so) sind Cygwin diejenigen? Was ist die Ausgabe von 'file your_shared_object.so'? – matzeri

+0

Vielleicht müssen Sie LD_LIBRARY_PATH so einstellen, dass der Pfad korrekt ist? Siehe [% ENV funktioniert nicht und ich kann keine gemeinsame Bibliothek verwenden] (http://stackoverflow.com/questions/8657005/env-doesnt-work-and-i-cannot-use-shared-library) –

+0

+ Håkon Hægland Die LD_LIBRARY_ist auf den Ordner/lib gesetzt – Helmy

Antwort

0

Von 1. Seite von Cygwin Website

Cygwin ist nicht:

ein Weg nativen laufen Linux auf Windows-Anwendungen. Sie müssen Ihre Anwendung aus der Quelle neu erstellen, wenn sie unter Windows ausgeführt werden soll.

eine Möglichkeit, auf magische Weise zu machen native Windows von UNIX® Funktionalität bewusst Anwendungen wie Signale, ptys usw. Auch hier müssen Sie Ihre apps von der Quelle bauen, wenn Sie die Vorteile von Cygwin Funktionalität nehmen wollen.

Da Ihre gemeinsamen Bibliotheken ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped sind, haben Sie ein Paket für ein Unix/Linux 32 Bit. Es kann nicht auf Cygwin/Windows laufen.

Unter Windows ist das Format PE32

$ file /usr/bin/cygreadline7.dll 
/usr/bin/cygreadline7.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows 
$ file /cygdrive/c/windows/system32/kernel32.dll 
/cygdrive/c/windows/system32/kernel32.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows