Як вирішити: -bash:: не вдається виконати бінарний файл


18

У мене є файл з ім'ям b1, який містить мову складання. Я намагаюся виконати файл на OSX за допомогою

$ ./b1

Я отримую таку помилку:

-bash: ./b1: cannot execute binary file

Я розглядав інші подібні запитання, але безрезультатно. Я точно використовую 64-бітну архітектуру.

Ось вихід відповідної інформації:

$ file b1
b1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ uname -a
Darwin Anthonys-MacBook-Pro.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64

Редагувати:

Ран, as b1який закінчився закінченням: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/as: fatal error in /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../libexec/as/x86_64/as

Відповіді:


25

На жаль, цей файл призначений для GNU / Linux

Відповідно до ваших fileрезультатів, ця програма призначена для GNU / Linux. Я знаю це тому, що:

  1. Файл b1знаходиться у форматі ELF(Розширюваний та Зв'язковий формат) , тоді як Mac OS X використовує Mach-Oформат для бінарних файлів;
  2. fileвизнає, що цей файл призначений для GNU/Linux 2.6.18, тобто він працює в більшості сучасних дистрибутивів Linux.

Щоб вирішити свою проблему, необхідно або запустити цю проблему в дистрибутиві Linux, перекомпілювати програму або отримати версію Mac OS X цієї програми.

Отже ... Чому не b1працює на ОС XYZ чи процесорі?

Так само, як люди розмовляють різними мовами, різні комп'ютери розуміють різні інструкції. Наприклад, ваш Mac використовує процесор Intel, а телефон Android - процесор ARM. Порівняйте ці два процесори з англійською та французькою мовами. Вони можуть належати одній мовній родині, але все-таки ви не можете говорити обом одночасно. Це призводить до висновку:

Різні комп’ютери "розмовляють" різними мовами.

Що стосується того, чому різні операційні системи (такі як Windows, Mac OS X та Linux) не можуть використовувати одні й ті ж бінарні файли, врахуйте це:

Що робить програмне забезпечення об’єктивно відмінним від апаратного? Не багато.

Обидва надають систему та "мову", що дозволяє складнішим компонентам комп'ютера виконувати завдання для кінцевого користувача. Для завершення роботи обом потрібна узгоджена мова. Уявіть, якби в кричучому матчі було 10 людей, кожен з яких говорив різною мовою. Ось чому різному програмному забезпеченню ОС потрібні різні бінарні файли, навіть якщо обидві операційні системи використовують один і той же процесор.


Привіт, у мене є схожа проблема при спробі компілювати файл ельфів у Mac OS 10.9. Скажіть, будь ласка, як запустити цей onmac
AllIsWell

Все, що ви знайшли спосіб для цього !?
Неокортекс

1

мова складання? Вам потрібно скласти його, а точніше зібрати.

man as

2
Здається, запитуючий співрозмовник мови збірки та машинного коду . Дивіться висновок fileу питанні.
JdeBP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.