Как определить, какой модуль Perl вызывает «неопределенный символ: Perl_Tstack_sp_ptr?» - PullRequest
7 голосов
/ 06 июня 2011

Я пытаюсь запустить скрипт Perl, но он возвращает:

/ usr / bin / perl: ошибка поиска символа: /usr/local/groundwork/perl/lib/5.8.8/x86_64-linux-thread-multi/auto/IO/IO.so: неопределенный символ: Perl_Tstack_sp_ptr

Есть ли способ определить, какой модуль Perl вызывает это?

Ответы [ 4 ]

14 голосов
/ 06 июня 2011

IO.so - это двоичный компонент IO . Модули этого дистрибутива также являются частью дистрибутива perl (то есть они являются двунаправленными).

Этот тип ошибки обычно возникает, когда двоичный файл, скомпилированный с использованием одной версии Perl, используется другой версией Perl.

2 голосов
/ 13 апреля 2015

Я столкнулся с этой проблемой недавно, когда в моих файлах входа была определена переменная окружения PERL5LIB, но они указывали на каталог, который был несовместим с системным perl. Это произошло из-за того, что файловая система HOME монтируется на многих компьютерах, где установки perl неоднородны. Удаление переменной среды решает проблему, и я найду лучший способ управления локальными библиотеками.

0 голосов
/ 12 января 2016

Edit:

Наконец, хотя я знаю, что он не отвечает на этот вопрос, я позволю себе, поскольку это выглядит как очень сложная информация, потому что я нашел множество сайтов, упоминающих эти ошибки, но очень немногих с непротиворечивыми решениями. Ну вот и все.

Я не смог обработать миграцию zimbra, которую мне пришлось сделать перед изменением пути платформы. Мы сделали это, перейдя из Ubuntu 8.04 с Zimbra 6.0.16, затем Zimbra 7.2.7, мигрировав в Ubuntu 10.04, затем обновив Zimbra 8.0.9, затем перейдя в Centos 7, затем обновившись до 8.6.0

В Centos, где мне нужно было переместить файлы зимбрамонов после того, как я это сделал ./install.sh -s ...

mv / opt / zimbra / zimbramon / lib / x86_64-linux-gnu-thread-multi / /opt/zimbra/zimbramon/lib/x86_64-linux-gnu-thread-multi.bak

Затем я снова запустил install.sh без -s

0 голосов
/ 15 января 2014

Я часто сталкиваюсь с подобной проблемой, когда использую старый Perl-модуль на новом CentOS (например, CentOS 6.4).

/usr/bin/perl: symbol lookup error: /home/sonnn/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Cwd/Cwd.so: undefined symbol: Perl_Tstack_sp_ptr

/usr/bin/perl: symbol lookup error: /home/sonnn/perl5/lib/perl5/x86_64-linux-thread-multi/auto/version/vxs/vxs.so: undefined symbol: Perl_Tstack_sp_ptr

Я решил эти проблемы:

  • Загрузите исходные коды Cwd версии от http://search.cpan.org/ и переустановите их

      # tar -xzf version-0.9906.tar.gz
      # cd version-0.9906
      # perl Makefile.PL INSTALL_BASE=/home/sonnn/perl5/
      # make
      # make install
    
      (If you use default module path, you can omit "INSTALL_BASE=/home/sonnn/perl5/")
    
  • Аналогично для других модулей

В вашем случае, я думаю, вы можете загрузить модуль ввода-вывода с http://search.cpan.org/ и переустановить его.

...