首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynaLoader.pm在使用ARSperl时检测到Perl未定义的yp_get_default_domain,但库存在

DynaLoader.pm在使用ARSperl时检测到Perl未定义的yp_get_default_domain,但库存在
EN

Stack Overflow用户
提问于 2014-08-07 13:59:56
回答 2查看 294关注 0票数 0

我有一台Ubuntu服务器,当我安装cpanminus时,它最近将Perl更新推到了5.14.2。这破坏了与BMC Remedy API模块的兼容性。看起来我不能回滚到旧版本的Perl,所以我尝试重新编译ARSperl for Perl5.14.2。

问题是,当我运行一个使用旧模块的旧Perl脚本时,我得到了以下结果:

代码语言:javascript
复制
Can't load '/usr/local/lib/perl5/5.14.2/auto/ARS/ARS.so' for module ARS:
/usr/local/lib/perl5/5.14.2/auto/ARS/ARS.so: undefined symbol:
yp_get_default_domain at /usr/local/lib/perl5/5.14.2/i686-linux/DynaLoader.pm line 190.

所以,谷歌一下告诉我,yp_get_default_domain住在libnsl。我甚至尝试用Makefile中显式调用的"-lnsl“重新编译ARSperl模块和Perl本身。不幸的是,这对我毫无帮助。该库实际上安装在系统的/usr/lib/i386-linux-gnu/下。

在ARSperl生成文件中:

LDFLAGS = -fstack-protector -L/usr/local/lib -L/usr/lib -L/usr/lib/i386-linux-gnu -lnsl

因此,对于Perl专家来说,我的问题是双重的。

-How我能确定Perl、DynaLoader或ARS.so本身中的哪一个找不到"yp_get_default_domain“吗?

对于系统中实际存在并链接到模块中的缺失库,解决上述DynaLoader消息的最佳下一步是使用-What吗?

提前感谢您分享您的知识和建议。

EN

回答 2

Stack Overflow用户

发布于 2014-08-07 14:39:53

将库的安装目录添加到Makefile.PL的$ARS_LDPATH中

就像这样

代码语言:javascript
复制
$ARSAPI      = "C:\\ARS_Library\\api764win";

if( $WINDOWS ){
  $ARS_LDPATH = qq{-L"$ARSAPI/lib"};
  $INCLUDES   = qq{-I"$ARSAPI/include"};
}else{
  $ARS_LDPATH = "-L$ARSAPI/lib";
  $INCLUDES   = "-I$ARSAPI/include";
}
票数 0
EN

Stack Overflow用户

发布于 2014-08-09 00:23:46

我们更新到了API1.93,开始使用AR ARSperl版本6.3而不是5.1.2,并在6.3的一节中向ARSperl Makefile.PL $ARS_LIBS添加了"-lsnl“。

这导致每次运行ARS.so模块时,Perl都会出现段错误。在进行了大量测试并尝试诊断为什么会发生段错误之后,我们从/opt/下的源代码中重新编译了一个单独的Perl-5.14.2实例,并删除了64int选项。在所有需要ARS模块重定向到/opt下的Perl版本的Perl脚本上,更新shebang行似乎又让事情恢复了正常。

感谢Chankey Pathak为我指明了Makefile.PL的方向,如果没有这个建议,我不会立即开始考虑改变那里的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25175190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档