Perl - DynaLoader无法找到可加载的对象

时间:2016-07-23 19:23:59

标签: perl cygwin

我是perl的新手,但我有一个perl脚本,需要很多模块才能工作,所有这些都在文件夹lib /中找到,当我尝试运行脚本并开始加载模块时(使用x;)调用dynaloader x时脚本失败;说无法找到模块x @INC的可加载对象然后我发现这些模块有共享对象(.so)文件,dynaloader无法找到它们的名字都是libx.so形式,它们在同一个文件夹中。 pm文件..所以问题是如何让dynaloader加载模块和共享库。

任何帮助将不胜感激.. P.S: 我正在通过cygwin运行脚本。 - 这些模块是语言环境模块,我没有makefile.pl,我也无法得到它。

1 个答案:

答案 0 :(得分:0)

来自cygwin网站的第1页

  

Cygwin不是:

     

在Windows上运行本机Linux应用程序的方法。如果希望它在Windows上运行,则必须从源重建应用程序。

     

一种神奇地让原生Windows应用程序了解UNIX®功能的方法,如信号,ptys等。再一次,你需要构建你的   来自源的应用程序,如果你想利用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