为什么可以';我在Solaris 10上构建加载Socket.so的Perl模块吗?

为什么可以';我在Solaris 10上构建加载Socket.so的Perl模块吗?,perl,makefile,solaris,Perl,Makefile,Solaris,我正在尝试构建Convert::ASN1模块,但在此过程中出现错误。我正在Solaris 10上使用Perl 5.12.0perl Makefile.PL运行正常,与make相同,但“make test”会引发以下错误: IMO最关键的部分是: t/00prim.t ....... Can't load '/usr/local/lib/perl5/5.12.0/sun4-solari +s/auto/Socket /Socket.so' for module Socket: ld.so.1: p

我正在尝试构建Convert::ASN1模块,但在此过程中出现错误。我正在Solaris 10上使用Perl 5.12.0
perl Makefile.PL
运行正常,与
make
相同,但“make test”会引发以下错误:

IMO最关键的部分是:

t/00prim.t ....... Can't load '/usr/local/lib/perl5/5.12.0/sun4-solari +s/auto/Socket
/Socket.so' for module Socket: ld.so.1: perl5.12.0: fata +l: 
relocation error: file /usr/local/lib/perl5/5.12.0/sun4-solaris/au +to/Socket/Socket.so:
 symbol inet_aton: referenced symbol not found at + /usr/local/lib/perl5/5.12.0/XSLoader.pm
 line 70.

当我尝试安装IO::Socket时发生了相同的错误。我想插座核心模块一定出了问题。这不是全部错误日志,而是主要部分

注意:这个答案纯粹是猜测,因为我没有Solaris机器来测试这个问题

看起来Solaris没有在
libsocket
中放置
inet\u aton
,这可能是在构建
Socket
时链接的对象。相反,看起来您需要将
-lresolv
添加到Makefile中的
LIBS
行(我不知道这是否在
Makefile.PL
for
Socket
中)


就像我说的,这纯粹是猜测。我的答案主要来自于。不过,我希望它能让您有所收获。

我没有安装Perl 5.12,但我可以访问Solaris 10,并且我可以确认Solaris的libsocket没有
inet\u aton
(而是
inet\u pton

但是解析器库(
libresolv
)确实有inet\u-aton,因此可能需要添加一个解决方法

-lresolv

到Makefile的LDFLAGS,并在cpan之外自己构建/安装它。

感谢您的回复,在internet上搜索解决方案时,我发现了以下内容:,它来自关于套接字的perl错误报告。此人描述了一个非常类似(如果不是完全相同的话)的问题,以及他在Solaris上解决该问题的方法。他提到了向库行添加-lresolv,就像您所做的那样。我将尝试他描述的整个过程,并报告我的发现。