Ubuntu'da 'ikili dosya yürütülemiyor: Biçim hatası yürütme' nasıl düzeltilir



Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin

Resmi apt-get depolarını kullanırken böyle bir şey olmamasına rağmen, yazılımı internetten indirip çalıştırırsanız, korkunç olanı görme şansınız vardır. bash: ./nameOfProgram: ikili dosya yürütülemiyor: Biçim hatası yürütme . Bu hatanın ardından genellikle bash: ./nameOfProgram.sh: İzin reddedildi veya buna benzer bir şey, Ubuntu'nun indirdiğiniz ikili programla doğru bir şekilde arabirim kuramadığını gösterir. Bunun nedeni, görünüşte geçerli bir Linux ikili dosyası olmasına rağmen, çekirdeğinizin şu anda desteklediğinden farklı bir yonga seti için tasarlanmış olmasıdır.



Ubuntu kullanan çoğu kişi, mikroçiplerini kimin yaptığına bakılmaksızın, Intel'in yayınladığı standart bir mimariye dayanan 32 bit veya 64 bit işlemciler kullanıyor. 64 bit işlemcilerin 32 bit modunda çalışabileceğini unutmamak önemlidir, bu nedenle 64 bit işlemciniz olmasına rağmen bu hatayı alıyorsanız, Ubuntu'nun 32 bit sürümünü çalıştırma olasılığınız vardır. Çipinizin ne şekilde çalıştığını söylemek için birkaç basit komut yeterlidir.



Yöntem 1: arch Komutunu Kullanma

Makinenize kurduğunuz mikroişlemci tipine aşina değilseniz, önce komut satırından arch komutunu kullanmak isteyeceksiniz. Bu komutu çalıştırdıktan sonra size döndürülen yalnızca tek bir çıktı satırı göreceksiniz. Çoğu durumda i686'yı görürsünüz, bu da 32 bitlik bir işlemci üzerinde olduğunuz ve bu nedenle x86_64 ikili dosyalarını çalıştıramayacağınız anlamına gelir. Bunun yerine amd64 veya benzer bir şey görürseniz, bir x86_64 işlemci kullanıyorsunuz ve en azından teorik olarak çoğu 32-bit ve 64-bit ikili dosyaları çalıştırabiliyor olmalısınız. Microsoft Windows'un aksine Ubuntu Linux, 644 bitlik yonga seti kullanıcılarının çoğu durumda 16 bit Windows programlarını işletim sistemlerinde çalıştırmalarına izin veren uygun araçları içerir.



Aslında bu mikroçip modelini kullanmasanız bile bu terimler hala geçerlidir. Örneğin, i686, aslında Intel 80686 yongaları olmasalar bile Linux'un birçok 32-bit işlemciden bahsetmesidir. 64 bit Intel teknolojisi kullanıyor olsanız bile, arch işlemcinize hala bir amd64 yongası diyebilir. Bu bir hata olduğunu göstermez ve güvenle göz ardı edilebilir. Kedi kullanabilirsin / proc / cpuinfo yada daha fazla / proc / cpuinfo tam olarak kullanmakta olduğunuz işlemci türünü bulmak için. Bu dosyadaki satırlar uzun olduğundan, grafiksel bir terminal penceresi kullanıyorsanız, F11'e basmadan önce basmak isteyebilirsiniz. Sanal konsol kullanıcıları, özellikle Ubuntu sunucusuyla çalışanlar, bu kadar endişelenmek zorunda kalmayacak.

Yazılım çalıştırma söz konusu olduğunda seçeneklerinizi daha da kısıtlayabilecek diğer bazı çıktı türleri görebilirsiniz. Ubuntu, bazı iş istasyonlarının yanı sıra birçok Klasik Macintosh ve daha eski OS X Macintosh makinelerinde bulunan PowerPC mimarisini en uzun süre destekledi. Aslında bugün çok az destek alsalar da, bu mimariler için Ubuntu depolarını hala bulabilirsiniz. Ancak, bu durumda büyük olasılıkla İnternet'ten indirdiğiniz birçok Linux ikili dosyasını resmi depoların dışında çalıştıramazsınız. Bu, Ubuntu'nun bu makinelerde çalışmadığı anlamına gelmez, ancak daha hafif olan Lubuntu dağıtımına bakmak isteyebilirsiniz.

Yöntem 2: Dosya Komutunu Kullanma

File komutu, farklı dosyaların ne içerdiğini tanımlar ve genellikle çok doğrudur. Dosyayı yazarak söz konusu dosyayı tanımlamayı deneyin nameOfProgram çıktı olarak ELF 32 bit mi yoksa ELF 64 bit mi aldığınızı görmek için. Size bunun ELF 64 bitlik bir ikili dosya olduğunu söylerse ve arch komutundan çıktı olarak i686'yı aldıysanız, bunu makinenizde makul bir şekilde çalıştırmanın bir yolu yoktur. 32 bit Ubuntu çalıştıran 64 bit bir mikroişlemci kullanıyorsanız, işletim sistemini teknik olarak yeniden yükleyebilirsiniz, ancak bu, tek bir programı çalıştırmak için biraz aşırı bir adımdır.



Çok az da olsa gerçek bir olasılık da var, bunun yerine çalıştırmaya çalıştığınızda üzerinde bir kötü amaçlı yazılım taraması çalıştırsanız bile terminale önemsiz karakterler yaydığı bir ikili dosyayla karşılaşabilirsiniz. Bu karakterler genellikle baklava biçimli bloklar veya alternatif olarak içlerinde sayısal değerler bulunan dikdörtgen küpler şeklini alır. Bazı bilgisayar bilimcileri ikinci tofu adını verir ve şu anda yüklü yazı tiplerinizin görüntüleyemeyeceği karakterlerin Unicode değerlerini temsil eder. Terminal bunları bu şekilde gösteriyorsa, bunun bir yazı tipi hatası olmadığından veya kötü amaçlı yazılımla ilgisi olmadığından emin olabilirsiniz. Daha ziyade, bunun nedeni, ikilinin içindeki derlenmiş mikroişlemci işlem kodunun sisteminize o kadar yabancı olması ve kodun bir kısmını nasıl yorumlayacağını bilmemesidir.

Bunu düzeltmenin en iyi yolu, mimariniz için uygun paketi kurmaktır. Paketleri Ubuntu'nun içinden kuruyorsanız, apt-get sistemi veya grafiksel Synaptic yöneticisi herhangi bir sorun olmadan sizi ele geçirir. Başka bir dağıtımdan paket indiriyorsanız, mimariniz için doğru olanı bulmanız gerekir. Örneğin, Arch Linux’un gvim paketi listesini ele alalım. Varsayılan paket x86_64 mimarisine sahipken, i686 yonga seti için de bir tane var. Bu, Intel kesme yapısıyla çalışan 32 bitlik makinelerde çalışacak, ancak Linux'un desteklediği diğer yonga kümeleri aslında kendi 32 bit uygulamalarını içerdiği için i686 ve 32 bit terimlerinin her zaman karşılıklı olarak kapsayıcı olmadığını unutmayın.

Tüm GNU / Linux sahnesini keşfeden kullanıcılar, bunlardan çok daha egzotik teknolojiler için derlenmiş ikili dosyalara rastlayabilir. Linux gerçekten bir çapraz platform kod sahnesidir, bu nedenle OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha ve diğer birçok standart ikili dosyasının birlikte çalışmak üzere derlendiğini göreceksiniz. ARM son derece popüler bir tablet ve akıllı telefon platformu olsa da, büyük olasılıkla bunlardan hiçbirini çalıştıramazsınız. Aynı zamanda Raspberry Pi'nin temel aldığı platformdur, yani Ubuntu'yu bir mobil cihazda veya Raspberry Pi için Ubuntu MATE dağıtımında çalıştırıyorsanız, Intel 32-bit veya x86_64 ikili dosyalar yerine bunlara gerçekten ihtiyacınız olacak demektir.

4 dakika okundu