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

37

Я не смог выполнить скомпилированный код на Фортране в Ubuntu 11.10 32 бит.

Сообщение об ошибке

bash: ./filename : Cannot execute binary file.

Я также установил библиотеки gcc и gfortran.

Может ли кто-нибудь помочь?

$ file um
um: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped 
user87654
источник
6
Пожалуйста, введите file filenameи сообщите результаты.
января
имя файла - um.exe, а результат - bash: ./um не может выполнить двоичный файл
user87654
2
Это не похоже на родную программу для Linux. Попробуйте использовать вино.
Лекенштейн
Этот исполняемый файл компилируется с использованием файла make, который компилирует набор кодов фортрана. этот exe сделан в машине fedora
user87654
1
Пожалуйста, введите file um.exeили file um(в зависимости от того, какое имя вашего двоичного файла). Тем не менее, вероятно, сгенерированные двоичные файлы по одной причине или другие двоичные файлы Windows. Также, если программа общедоступна, вы можете опубликовать ссылку на источники. Или просто разместите make-файл здесь.
января

Ответы:

38

Как видно из вывода, file umкоторый вы опубликовали в комментарии, ваш двоичный файл является 64-разрядным двоичным файлом.

32-битные системы не могут запускать 64-битные двоичные файлы, это работает только наоборот.

elmicha
источник
3
Это самая распространенная причина, по которой я сталкивался с этой проблемой. Использование fileидентифицирует это довольно быстро.
mikebabcock
Таким образом, нет никакого решения для этого?
ДжонМерлино
@JohnMerlino Либо предоставьте Аппаратному обеспечению правильный набор инструкций и ОС, которая его поддерживает (Аппаратное обеспечение AMD64 и ОС для Программ AMD64). или смоделируйте / эмулируйте / виртуализируйте его (Virtual Box / JVM / ...) или получите версию для вашего набора инструкций. Вы не можете запускать Программное обеспечение для других Инструкций, установленных как собственные Программы.
12431234123412341234123
3

Попробуйте сделать файл исполняемым

chmod +x um.exe

Тогда попробуйте запустить его

./um.exe

Но если это исполняемый файл, скомпилированный для Windows, вам, вероятно, нужно установить Wine.

carestad
источник
3

Другое решение для людей, у которых возникла эта проблема, за исключением части о несоответствующих битах, - это запуск файла без команды "bash".

Просто используйте chmod +x 'path to the file'и запустите 'the path to the file'в терминале. Так я решил свою проблему.

Onurhan
источник
0

Другой возможный источник этой ошибки: попытка запустить двоичный исполняемый файл Linux на Mac или наоборот.

Например, пытаясь запустить trueдвоичный файл с моего Mac на компьютере с Ubuntu, на который я его отправил:

$ ./mactrue 
-bash: ./mactrue: cannot execute binary file: Exec format error

Если вы загрузили двоичный файл и выполнить его не удалось с этой ошибкой, проверьте, загрузили ли вы версию для неправильной ОС.

Марк Эмери
источник
0

Для меня, копирование двоичного файла в Приложения на моем Mac, а затем в мой путь испортило его на моем Mac. Я почти уверен, что папка «Приложения» превратила двоичный файл в псевдоним вместо реального двоичного файла.

-bash: /usr/local/bin/terraform: cannot execute binary file
mike$ file /usr/local/bin/terraform 
/usr/local/bin/terraform: MacOS Alias file

Я снова разархивировал бинарный файл из моих загрузок и просто mvотредактировал его на свой путь, и он работал нормально.

mike$ file /usr/local/bin/terraform
/usr/local/bin/terraform: Mach-O 64-bit executable x86_64
Майкл Дэвидсон
источник
0

Для гуглеров:

  • 32-битный или 64-битный? Проверить сfile yourbinary
  • Разрешение на исполнение? Делатьchmod +x yourbinary
  • Путь правильный? Делать./yourbinary
Dai
источник