Nasıl Çözülür: -bash:: ikili dosya çalıştırılamaz


18

Derleme dili içeren b1 adlı bir dosya var. Dosyayı OSX üzerinde kullanarak yürütmeye çalışıyorum

$ ./b1

Aşağıdaki hatayı alıyorum:

-bash: ./b1: cannot execute binary file

Diğer benzer sorulara baktım, ama boşuna. Kesinlikle 64 bit mimari kullanıyorum.

İlgili bilgilerin çıktısı:

$ 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

Düzenle:

Sonunda as b1şu şekilde sona erdi: /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

Yanıtlar:


25

Üzgünüz, bu dosya GNU / Linux içindir

Göre fileÇıktınıza , bu program GNU / Linux içindir. Bunu biliyorum çünkü:

  1. Dosya b1içindedirELF (Genişletilebilir ve Bağlantılanabilir Format) , Mac OS X kullanırken, biçim Mach-Oikili biçimini;
  2. file bu dosyanın GNU/Linux 2.6.18 olduğunu bilir, yani çoğu modern Linux dağıtımında çalışır.

Sorununuzu çözmek için, bu sorunu bir Linux dağıtımında çalıştırmanız, programı yeniden derlemeniz veya bu programın Mac OS X sürümünü edinmeniz gerekir.

Yani ... Neden gelmez b1üzerinde çalışmak XYZ OS veya CPU?

İnsanların farklı dilleri konuşması gibi, farklı bilgisayarlar farklı talimatları anlar. Örneğin, Mac'iniz bir Intel işlemci kullanırken Android telefonunuz bir ARM işlemci kullanıyor. Bu iki işlemciyi İngilizce ve Fransızca ile karşılaştırın. Aynı dil ailesine ait olabilirler, ancak yine de aynı anda her ikisini de konuşamazsınız. Bu bir sonuca yol açar:

Farklı bilgisayarlar farklı dillerde "konuşur".

Neden farklı işletim sistemlerinin (Windows, Mac OS X ve Linux gibi) aynı ikili dosyaları kullanamadığını düşünün:

Yazılımı donanımdan objektif olarak farklı kılan nedir? Fazla değil.

Her ikisi de bir sistem ve bilgisayarın daha karmaşık bileşenlerinin son kullanıcı için görevleri tamamlamasını sağlayan bir "dil" sağlar. Her ikisi de işin yapılabilmesi için kabul edilmiş bir dile ihtiyaç duyar. Bağıran bir maçta her biri farklı bir dil konuşan 10 kişi olup olmadığını düşünün. Bu nedenle, her iki işletim sistemi de aynı işlemciyi kullanıyor olsa bile, farklı işletim sistemi yazılımlarının farklı ikili dosyalara ihtiyacı vardır.


Merhaba, Mac OS 10.9 elf dosyası derlemeye çalışırken benzer bir sorun var. Lütfen bu onmac'ı nasıl çalıştıracağınızı söyler misiniz
AllIsWell

Bunun için bir yol buldun mu?
Neocortex

1

montaj dili? Derlemeniz veya daha çok bir araya getirmeniz gerekir.

man as

2
Soru soran kişi, montaj dilini ve makine kodunu sınırlamış gibi görünüyor . fileSorunun çıktısına bakın .
JdeBP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.