2016-07-23 73 views
0

我都是新來的Perl,但我有一個perl腳本,需要大量的模塊工作,所有都在文件夾lib /中找到,當我嘗試運行腳本,並開始加載模塊(使用x;)調用dynaloader x時腳本失敗;說不能找到可加載的對象的模塊x @INC然後我覺得這些模塊具有共享對象(.so)文件,dynaloader無法找到,它的名字都是形式libx.so,他們在同一個文件夾中。 pm文件..所以問題是我如何使dynaloader加載模塊和共享庫。Perl - DynaLoader無法找到可加載對象

任何幫助將不勝感激。 頁數: -i我正在通過cygwin運行腳本。 - 這些模塊是語言環境模塊,我沒有他們的makefile.pl,我也無法得到它。

+0

你確定共享對象(.so)的Cygwin的人? 'file your_shared_object.so'的輸出是什麼? – matzeri

+0

也許你需要設置'LD_LIBRARY_PATH'來包含正確的路徑?請參閱[%ENV不起作用,我無法使用共享庫](http://stackoverflow.com/questions/8657005/env-doesnt-work-and-i-cannot-use-shared-library) –

+0

+HåkonHægland LD_LIBRARY_is設置爲/ lib文件夾 – Helmy

回答

0

從Cygwin的網站

的Cygwin的第一頁是不是:

一種方式來運行本地Linux上的Windows應用程序。如果您希望它在Windows上運行,您必須從源代碼重建應用程序。

辦法神奇地讓原生的Windows應用意識到像信號的pty等UNIX®功能同樣,你需要的,如果你想利用Cygwin的 功能,從源代碼編譯您 應用。

由於你的共享庫是ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped你有一個爲Unix/Linux 32位構建的包。它不能在Cygwin/Windows上運行。

Windows上的格式是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 
相關問題