Ошибка при использовании фильтра компиляции байт-кода, PERL

#perl #compilation #binary #bytecode

#perl #Сборник #двоичный #байт-код

Вопрос:

Когда я компилирую с помощью: pp -I lib -f Bytecode -o myapp_binary_bytecode myapp

Я получаю эту ошибку:

 "my" variable $fh masks earlier declaration in same scope at /Library/Perl/5.12/PAR/Filter/Bytecode.pm line 60.
Can't locate B/Bytecode.pm in @INC (@INC contains: /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/darwin-thread-multi-2level /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 .) at (eval 1) line 18.
BEGIN failed--compilation aborted at (eval 1) line 18.
BEGIN failed--compilation aborted.
Cannot transform /var/folders/cd/rwsp63c15bb01r89z76_bvr40000gn/T/Q3ubgSUe8P to /var/folders/cd/rwsp63c15bb01r89z76_bvr40000gn/T/LIcOpNf_Oh: No such file or directory (512)
  

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

Спасибо!

Комментарии:

1. Похоже, мне нужно установить модуль байт-кода?

Ответ №1:

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

Отсутствие разрешений на чтение файла модуля также может привести к этой ошибке, но это почти никогда не проблема.

Комментарии:

1. Я установил модуль, а затем программа, похоже, компилируется с другой ошибкой, но эта точно такая же ошибка появляется при ЗАПУСКЕ двоичного файла

Ответ №2:

Как бы то ни было, я бы изучил эту my проблему. Что касается того, почему у запущенного двоичного файла все еще есть эта проблема, pp вы можете легко пропустить зависимости, но у него есть динамический способ противостоять этой проблеме. Попробуйте запустить pp -x script , и он запустит скрипт для поиска любых зависимостей во время выполнения. Также я думаю, что есть переключатель для ручного добавления зависимостей в список.