Почему я не могу собрать модули Perl, которые загружают Socket.so на Solaris 10? - PullRequest
2 голосов
/ 20 сентября 2010

Я пытаюсь собрать модуль Convert :: ASN1, но в процессе я получаю сообщение об ошибке.Я использую Perl 5.12.0 на Solaris 10. perl Makefile.PL работает без проблем, то же самое для make, но «make test» выдает эту ошибку:

САМАЯ КРУПНАЯ ЧАСТЬ ЭТО ИМО:

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.Я думаю, что-то должно быть не так с модулем ядра Socket.Это не весь журнал ошибок, а основная часть.

Ответы [ 2 ]

1 голос
/ 12 октября 2010

У меня нет установки Perl 5.12, но у меня есть доступ к Solaris 10, и я могу подтвердить, что в libsocket Solaris нет inet_aton (вместо него inet_pton).

Но библиотека резолвера (libresolv) имеет inet_aton, поэтому можно обойти эту проблему, добавив

-lresolv

в LDFLAGS Makefile, и соберите / установите его вне cpan.

1 голос
/ 20 сентября 2010

Примечание: этот ответ является чисто предположением, так как у меня нет машины Solaris для проверки этого.

Похоже, что Solaris не помещает inet_aton в libsocket, что, по-видимому, связано с тем, когда вы создаете Socket. Вместо этого, похоже, вам нужно добавить -lresolv к строке LIBS в Makefile (я не знаю, есть ли это в Makefile.PL для Socket ...).

Как я уже сказал, это чистая гипотеза. Я получаю этот ответ в основном из этого сообщения об ошибке для DBMail . Но я надеюсь, что это куда-то тебя приведет.

...