Jan*_*kie 3 perl object shared-libraries
我刚刚购买了一个商业perl共享对象,它的文档非常简单.特别是它是一个".so"文件,我知道它需要进入perl用于查找共享对象的任何目录.
通常我会遇到".pm"文件并知道如何安装那些没有问题,但这是我第一次使用perl中的东西,我必须安装".so"文件,或将其复制到目录.
有谁知道我会如何找到这个目录?这是Perl的香肠制作水平,我不熟悉(另外我还是培根gal.哈哈!).珍妮
更新:(更清晰).出售此公司的公司名为"hcmodule.so".他们的示例perl脚本在其中使用了一个"使用hcmodule"的pragma,以及稍后调用的..
$retval = hcmodule( ........ <SNIP>..);
Run Code Online (Sandbox Code Playgroud)
如果这有助于一些不起眼的事情.
Perl从其目录下的lib
目录加载共享对象.在Perl的某些安装中,它将是与找到主Perl二进制文件的lib
目录并行的bin
目录.在某些系统中,它将位于其他地方.例如,我自己构建的Perl(MacOS X上的5.14.1)说(输出的一部分perl -V
):
@INC
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/site_perl/5.14.1/darwin-2level
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/site_perl/5.14.1
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/5.14.1/darwin-2level
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/5.14.1
Run Code Online (Sandbox Code Playgroud)
另一方面,系统Perl(5.12.3)说:
@INC:
/Library/Perl/5.12/darwin-thread-multi-2level
/Library/Perl/5.12
/Network/Library/Perl/5.12/darwin-thread-multi-2level
/Network/Library/Perl/5.12
/Library/Perl/Updates/5.12.3
/System/Library/Perl/5.12/darwin-thread-multi-2level
/System/Library/Perl/5.12
/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.12
Run Code Online (Sandbox Code Playgroud)
MacOS X上的共享对象有一个.bundle
扩展名(而不是.so
),我拥有的一些包是:
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBD/Informix/Informix.bundle
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBD/SQLite/SQLite.bundle
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBI/DBI.bundle
Run Code Online (Sandbox Code Playgroud)
相应的PM文件是:
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBD/Informix.pm
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBD/SQLite.pm
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBI.pm
Run Code Online (Sandbox Code Playgroud)
在任何情况下,Perl都希望.so
在与模块名称相关的目录中查找该文件.应该有安装说明,特别是因为你付了钱..pm
在两个相关的相关目录中将存在(至少)共享对象和要安装的文件.