./исполняемый файл: не может выполнить двоичный файл

LibreOffice / OpenOffice, а также большинство других текстовых процессоров (Abiword) может сделать это довольно легко.

Существует немного названной утилиты unoconv это использует кодовую базу LibreOffice, чтобы сделать преобразования формата файла на командной строке. Это может считать и записать любую комбинацию форматов, как которые LibreOffice может и делать очень легким сделать вещи doc кому: pdf преобразования на командной строке. Простой txt кому: pdf было бы легко для него.

12
28.10.2010, 22:07
2 ответа

Сообщение cannot execute binary file не имеет никакого отношения к терминалам (Интересно, что привело Вас думать, что — и я рекомендую стараться не делать такие предположения в вопросе, поскольку они имеют тенденцию топить Вашу фактическую проблему в путанице отвлекающих маневров). На самом деле это - способ удара выразить ENOEXEC (чаще всего выражаемый как exec format error.

Во-первых, удостоверьтесь, что Вы случайно не пытались выполнить этот исполняемый файл как сценарий. Если Вы записали . ./executable, это говорит удару выполняться ./executable в той же среде как сценарий выполнения вызова (в противоположность отдельному процессу). Это не может быть сделано, если файл не является сценарием.

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

Вот список дополнительных данных, которые могут помочь:

  • Вывод file …/executable на сервере B.
  • Некоторая информация о цели, такой как вывод uname -a если это подобно Unix.
  • Проверьте, что цель видит то же содержание файла каждый раз: выполненный cksum ./executable или md5sum ./executable или безотносительно метода Вы имеете на цели непосредственно перед тем, как yet-another-bash-script вызывает ./executable. Проверьте, что результатами является то же в Гудзонском вызове в Вашем успешном ручном вызове и на сервере B.
  • Добавить set -x наверху yet-another-bash-script (чуть ниже #!/bin/bash строка). Это произведет трассировку всего, что сценарий делает. Сравните трассировки и сообщите о любом различии или причуде.
  • Опишите, как цель загружается, когда Вы запускаете скрипты вручную и когда Гудзон включен. Могло случиться так, что цель загружается по-другому и некоторый загружаемый модуль, который оказывает поддержку для формата ./executable не становится загруженным (или еще не загружается) в Гудзонских вызовах. Вы могли бы хотеть использовать set -x в других сценариях, чтобы помочь Вам там и осмотреть журналы начальной загрузки от цели.
13
27.01.2020, 19:56
  • 1
    Если сценарий содержит "../исполняемый файл" затем разве я не встретился бы с этой проблемой, неважно, как сценарий вызывается? Когда я вызываю "./kickOffTests.sh", существует несколько слоев сценариев вниз, прежде чем"./исполняемый файл" будет вызван на цель. Вы правы, что я не должен делать предположения в вопросе, но так как единственная вещь, это отличается, состоит в том, как родительский сценарий вызывается, где один путь находится вручную в открытом ssh терминале, и другой автоматически Гудзоном, кажется, что ответ заключается в том различии. –  jasper77 28.10.2010, 22:26
  • 2
    @jasper77: Я понимаю теперь, что сообщение об ошибке не делает довольно средний, что я первоначально думал (хотя, если Ваша проблема связана с терминалами, соединение является очень косвенным). См. мой пересмотренный ответ и попытайтесь обеспечить такое количество предложенных дополнительных данных, как Вы можете. –  Gilles 'SO- stop being evil' 28.10.2010, 23:22
  • 3
    , который я допускаю красный, стоял в пользу других, что сценарии не делали точно, что я думал. Gilles закрепил его; исполняемые файлы были созданы для другой цели. В "делают-C" строкой одного сценария, я бросил целевое имя, таким образом, цель по умолчанию была создана вместо той, я предназначил. После того как я зафиксировал это, Гудзон успешно может управлять minicom sesson. Так как я сталкивался с проблемами, касающимися консольного приложения, работающего от ssh, и узнал о 'TERM=console экспорта' и "ssh-t-t" по пути, я был убежден, что мои проблемы были там. Спасибо Gilles! –  jasper77 29.10.2010, 00:32

Это может произойти при пропавших без вести строки хижины наверху сценария. Удостоверьтесь, что сценарий запускается с:

#!/bin/bash

Это только собралось для меня, когда я запустил скрипт с sudo -u <user>

0
27.01.2020, 19:56

Теги

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