2011-08-18 62 views
3

我刚刚购买了一个商业perl共享对象,它的文档非常轻。特别是它是一个“.so”文件,我知道它需要进入perl用于查找共享对象的任何目录。哪里可以找到perl共享对象目录?

通常我遇到“.pm的”文件,并知道如何安装这些没有问题,但是这是我曾经用过的东西在Perl第一次,我必须安装一个“所以”文件,或者将它复制到一个目录。

任何人都知道我会如何找到这个目录?这是Perl的香肠制作水平,我不熟悉(加上我是一个培根gal无论如何,大声笑!)。 Janie

更新:(为了更加清楚)。销售该产品的公司有名为“hcmodule.so”的文件。他们的榜样perl脚本有“使用hcmodule”,后来作为呼叫的一个使用它编译..

$retval = hcmodule(........ <SNIP>..); 

如果这有助于unmurky事情有点。

+1

看起来很奇怪,为某件事付钱,然后向社区寻求支持。图书馆供应商当然可以告诉你如何使它工作,或者他们应该把钱还给你。 –

+1

格兰特,问题是在哪里找到perl共享对象目录。非常适合S.O.而不是关于产品本身的支持问题。感谢名单。 –

回答

6

Perl从lib目录下的目录加载共享对象。在某些Perl的安装中,这将是lib目录,该目录与找到主Perl二进制文件的bin目录平行。在某些系统中,它将位于其他地方。例如,Perl中的(5.14.1在MacOS X)我自己的编译说(从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 

在另一方面,该系统的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 

在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 

相应的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 

在任何情况下,Perl将期望去寻找.so文件中涉及到的模块名称的目录。应该有安装说明,特别是因为你付了钱。在两个相关的相关目录中将会有(至少)一个共享对象和一个.pm文件被安装。

3

您是否尝试过perl -V以查看它是否具有您需要的信息?你有环境变量LD_LIBRARY_PATH设置?

我在Linux上,并做perl -V(大写V)显示Perl库在/usr/lib/perl/5.10和一些其他库。

您购买的是什么Perl * .so文件?我从来没有听说过有人卖Perl共享库。

+4

也许值得一提的是,Perl二进制API在不同版本之间变化,所以这个'。所以'当你从Perl 5.10升级到Perl 5.12时会变成南瓜(例如)。 – duskwuff

+0

感谢David W.对于为perl销售.so非常有意义。它的理由是,如果你足够聪明,可以安装一个.pm,你也足够聪明地进行逆向工程。所以作为一个二进制文件,反向工程比使用纯文本编辑器查看脚本要困难得多。这是一个非常特定于行业的业务(我在医疗保健领域),perl的使用相当多。这是我的一部分,因为像你一样,我从来没有买过.so。如果他们的商业模式有效,那么他们会拥有更多的权力我不想重新发明轮子,我们花在这上面的东西是值得的。 –

+1

那么,* .so如何使用?当然必须有一个* .pm模块来调用它。在这种情况下,它应该放在'@ INC'的'auto'目录下。你可以运行这个'perl -e'打印连接“\ n”,@INC;''并获取模块使用的目录列表。那里有一个'auto'目录,您可以在其中存放.so。在auto下,它可能与使用它的'.pm'在相同的目录结构中。还有一个'* .pm'文件吗? –