2015-07-02 3 views
1

У меня есть файл сценария, который мне предоставили для запуска в Windows с помощью Cygwin. Когда я пытаюсь использовать этот файл, я получаю следующую ошибку:cygwin binary exec format error

-bash:/sigdet/filename: невозможно выполнить двоичный файл: ошибка формата Exec.

sigdet - это папка в каталоге Cygwin, в которой у меня есть сценарий. Rawdata - это имя каталога с необработанными файлами данных, которые сценарий должен анализировать.

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

Я первый изменил каталог так:

$ кд/sigdet/

Тогда я запускал скрипт, который suppsed работать:

$/sigdet/имя файла -i RAWDATA

Должен ли файл сценария иметь расширение в окнах? Я попытался изменить его на расширение .sh без везения. Мне говорят, что он просто работает на других машинах Windows, насколько это возможно.

Спасибо всем, кто может с этим помочь.

+0

Показать сценарий. – Cyrus

+0

Файл защищен copywrite, поэтому я не могу загрузить эту информацию, к сожалению. – StructuralEquationModel

ответ

1
  1. Ваш файл не является выполнимым. Он, скорее всего, содержит исполняемый файл ELF, предназначенный для операционной системы Linux, или он поврежден.
  2. Если файл был сценарий оболочки, или на самом деле ничего, что содержащемуся простой текст, вы получите различные ошибки (например, «ожидается имя команды» или «неизвестная команда: XYZ» и т.д.)
  3. Scripts не должны иметь расширения файлов, как и любые исполняемые файлы. С другой стороны, они должны иметь shebangs: маленький текст, расположенный в первой строке, который сообщает системе путь к интерпретатору. Например, исполняемый скрипт Python можно назвать whatever и иметь #!/usr/bin/python3 или аналогичный в первой строке. Когда вы запустите его через ./whatever в оболочке, он будет искать python3 в /usr/bin и запустит ваш файл следующим образом: /usr/bin/python3 ./whatever. (Фактически, благодаря этому вы также можете указать дополнительные параметры, которые передаются интерпретатору.)

Существует также вероятность того, что ваш скрипт действителен, но он содержит shebang, указывающий на плохой интерпретатор. Если это так, то, скорее всего, путь правильный, в противном случае вы получите ошибку /whatever/interpreter: bad interpreter: no such file or directory или подобное. Но тогда все остальные точки относятся к интерпретатору (который является еще одним исполняемым файлом ...)

Если сценарий и/или интерпретатор должны были выполняться по крайней мере в Windows или Cygwin, он должен либо содержать вышеупомянутый shebang (#!/path), либо он должен быть исполняемым Windows (в этом случае данные файла должны начинаться с MZ писем, вы можете проверить его в блокноте.) Если это не так, значит, файлы, которые вы получили, не могут запустить на Cygwin.

+0

Спасибо за быстрый ответ, rr-. Я открыл файл в блокноте, и у него есть ELF в начале. Означает ли это, что я не могу запустить сценарий, если я не использую Linux? – StructuralEquationModel

+0

Да, это точно так. –

0

Если бы такая же проблема. Добавлено следующее в верхней части Makefile:

экспорт ARCH = Cygnus

Что произошло во время процесса сделать то, что были созданы для Linux и Windows, версии исполняемых файлов. Вам просто нужно использовать версии ./.exe.