/ usr / bin / perl: плохой интерпретатор: текстовый файл занят

Стандартизировать пути сборки

Простым решением будет стандартизация ваших путей сборки, поэтому они всегда имеют форму, например:

c:\buildXXXX

Затем, когда вы сравните, скажем, build0434 с build0398, просто препроцессор двоичный, чтобы изменить все вхождения build0434 в build0398. Выберите шаблон, который, как вы знаете, вряд ли появится в вашем фактическом источнике / данных, за исключением тех строк, которые компилятор / компоновщик встраивается в PE.

Тогда вы можете просто провести свой обычный анализ разницы. Используя одинаковые пути, вы не будете перемещать какие-либо данные и вызывать ложные срабатывания.

Утилита Dumpbin

Еще один совет - использовать dumpbin.exe (поставляется с MSVC). Используйте dumpbin / all , чтобы сбрасывать все детали двоичного файла в текстовый / шестнадцатеричный дамп. Это может сделать более очевидным, чтобы увидеть, что / где меняется.

Например:

dumpbin /all program1.exe > program1.txt
dumpbin /all program2.exe > program2.txt
windiff program1.txt program2.txt

Или используйте свой любимый инструмент для обработки текста вместо Windiff.

Утилита Bindiff

Вы можете найти инструмент bindiff.exe от Microsoft, который можно получить здесь:

Инструменты поддержки Windows XP с пакетом обновления 2 (SP2)

Он имеет опцию / v, чтобы указать ему игнорировать определенные двоичные поля, такие как метки времени, контрольные суммы и т. д .:

«BinDiff использует специальную процедуру сравнения для Win32 исполняемые файлы, которые маскируют различные метки времени сборки в обоих файлах при выполнении сравнения. Это позволяет отмечать два исполняемых файла как «Near Identical», когда файлы действительно идентичны, за исключением того времени, когда они были созданы ».

blockquote>

Однако, похоже, что вы уже делаете надмножество того, что делает bindiff.exe.

29
задан cjm 7 December 2010 в 18:38
поделиться

2 ответа

Думаю, вы столкнулись с этой проблемой .

Ядро Linux выдаст ошибку неверный интерпретатор: текстовый файл занят , если ваш Perl сценарий (или любой другой сценарий) открыт для записи, когда вы пытаетесь его выполнить.

Вы не говорите, что делали процессы, интенсивно использующие диск. Возможно ли, что у одного из них был открыт сценарий для чтения и записи (даже если он на самом деле ничего не писал)?

21
ответ дан 28 November 2019 в 00:21
поделиться

Это всегда связано с тем, что интерпретатор Perl (/ usr / bin / perl) недоступен. Фактически, это происходит, когда запущен сценарий оболочки или awk, или что-то еще в #! строка в верхней части скрипта.

Причиной может быть много вещей ... Perms, заблокированный файл, файловая система отключена, и так далее.

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

1
ответ дан 28 November 2019 в 00:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: