Cara mengatasi: -bash:: tidak dapat mengeksekusi file biner

18

Saya memiliki file bernama b1 yang berisi bahasa assembly. Saya mencoba menjalankan file menggunakan OSX

$ ./b1

Saya mendapatkan kesalahan berikut:

-bash: ./b1: cannot execute binary file

Saya telah melihat pertanyaan serupa lainnya, tetapi tidak berhasil. Saya pasti menggunakan arsitektur 64 bit.

Berikut ini adalah keluaran dari info yang relevan:

$ 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

Edit:

Ran as b1yang berakhir dengan: /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

pengguna304868
sumber

Jawaban:

25

Maaf, file ini untuk GNU / Linux

Menurut filehasil Anda , program ini untuk GNU / Linux. Saya tahu ini karena:

  1. File b1tersebut dalam format ELF(Format yang Dapat Diperluas dan Dapat Ditautkan) , sedangkan Mac OS X menggunakan Mach-Oformat untuk binari;
  2. filemengenali file ini untuk GNU/Linux 2.6.18, artinya akan berfungsi pada sebagian besar distribusi Linux modern.

Untuk mengatasi masalah Anda, Anda harus menjalankan masalah ini dalam distribusi Linux, mengkompilasi ulang program, atau mendapatkan versi Mac OS X dari program ini.

Jadi ... Kenapa tidak b1bekerja di XYZ OS atau CPU?

Sama seperti orang berbicara bahasa yang berbeda, komputer yang berbeda memahami instruksi yang berbeda pula. Misalnya, Mac Anda menggunakan prosesor Intel, sedangkan ponsel Android Anda menggunakan prosesor ARM. Bandingkan kedua prosesor ini dengan Bahasa Inggris dan Prancis. Mereka mungkin berasal dari keluarga bahasa yang sama, tetapi tetap saja, Anda tidak dapat berbicara keduanya sekaligus. Ini mengarah pada suatu kesimpulan:

Komputer yang berbeda "berbicara" dalam berbagai bahasa.

Adapun mengapa berbagai sistem operasi (seperti Windows, Mac OS X, dan Linux) tidak dapat menggunakan binari yang sama, pertimbangkan ini:

Apa yang membuat perangkat lunak berbeda secara objektif dengan perangkat keras? Tidak banyak.

Keduanya menyediakan sistem dan "bahasa" yang memungkinkan komponen komputer yang lebih kompleks untuk menyelesaikan tugas bagi pengguna akhir. Keduanya membutuhkan bahasa yang disepakati untuk menyelesaikan pekerjaan. Bayangkan jika ada 10 orang dalam pertandingan berteriak, masing-masing berbicara dalam bahasa yang berbeda. Inilah sebabnya mengapa perangkat lunak OS yang berbeda memerlukan binari yang berbeda, bahkan jika kedua sistem operasi menggunakan prosesor yang sama.

Winny
sumber
Hai, Saya memiliki masalah yang sama ketika mencoba mengompilasi file elf di Mac OS 10.9. Bisakah Anda memberi tahu saya cara menjalankan onmac ini
AllIsWell
Apakah Anda menemukan cara untuk ini !?
Neocortex
1

bahasa campuran? Anda perlu mengkompilasinya, atau lebih tepatnya merakitnya.

man as
Emery Lapinski
sumber
2
Penanya tampaknya telah menggabungkan bahasa rakitan dan kode mesin . Lihat hasil dari filedalam pertanyaan.
JdeBP