Cara Memperbaiki ‘tidak dapat melaksanakan fail binari: Kesalahan format Exec’ di Ubuntu



Cuba Instrumen Kami Untuk Menghapuskan Masalah

Walaupun tidak seharusnya berlaku ketika menggunakan repositori apt-get rasmi, jika anda memuat turun perisian dari Internet dan menjalankannya, ada kemungkinan anda akan melihat yang ditakuti bash: ./nameOfProgram: tidak dapat melaksanakan fail binari: Kesalahan format Exec . Kesalahan ini, yang biasanya diikuti oleh bash: ./nameOfProgram.sh: Kebenaran ditolak atau seumpamanya, menunjukkan bahawa Ubuntu tidak dapat berinteraksi dengan betul dengan perduaan yang anda muat turun. Ini kerana walaupun nampaknya binari Linux yang sah, ia direka untuk chipset yang berbeza daripada yang disokong oleh kernel anda pada masa ini.



Sebilangan besar orang yang menggunakan Ubuntu menggunakan pemproses 32-bit atau 64-bit berdasarkan senibina standard yang dikeluarkan oleh Intel, tanpa mengira siapa yang sebenarnya membuat mikrocip mereka. Penting untuk diingat bahawa pemproses 64-bit dapat berjalan dalam mod 32-bit, jadi jika anda mendapat ralat ini walaupun anda mempunyai pemproses 64-bit, ada kemungkinan anda menjalankan Ubuntu versi 32-bit. Hanya beberapa perintah mudah yang diperlukan untuk mengetahui bagaimana cip anda beroperasi.



Kaedah 1: Menggunakan Arka lengkungan

Sekiranya anda tidak biasa dengan jenis mikropemproses yang telah anda pasangkan pada mesin anda, pertama sekali anda ingin menggunakan arahan lengkungan dari baris arahan. Anda hanya akan melihat satu baris output yang dikembalikan kepada anda setelah menjalankan perintah ini. Dalam banyak kes, anda akan melihat i686, yang bermaksud bahawa anda menggunakan pemproses 32-bit dan oleh itu tidak dapat menjalankan binari x86_64. Sekiranya anda melihat amd64 atau yang serupa, maka anda menggunakan pemproses x86_64, dan sekurang-kurangnya secara teori dapat menjalankan kebanyakan binari 32-bit dan 64-bit. Tidak seperti Microsoft Windows, Ubuntu Linux sebenarnya mengandungi alat yang tepat untuk membolehkan pengguna chipset 644-bit untuk menjalankan program Windows 16-bit dalam sistem operasi mereka dalam banyak kes juga.



Syarat-syarat ini masih berlaku walaupun anda sebenarnya tidak menggunakan model mikrocip tertentu. Sebagai contoh, i686 adalah bagaimana Linux merujuk kepada banyak pemproses 32-bit walaupun mereka sebenarnya bukan cip Intel 80686. Walaupun anda menggunakan teknologi Intel 64-bit, arch mungkin masih memanggil pemproses anda sebagai cip amd64. Ini tidak menunjukkan ralat dan boleh diabaikan dengan selamat. Anda boleh menggunakan kucing / proc / cpuinfo atau lebih / proc / cpuinfo untuk mengetahui jenis pemproses yang anda gunakan. Oleh kerana garis dalam fail ini panjang, anda mungkin ingin mendorong F11 sebelum mengeluarkannya jika anda menggunakan tetingkap terminal grafik. Pengguna konsol maya, terutama yang bekerja dengan pelayan Ubuntu, tidak perlu terlalu risau.

Anda mungkin melihat beberapa jenis output lain, yang mungkin akan membatasi pilihan anda ketika menjalankan perisian. Ubuntu menyokong seni bina PowerPC untuk masa yang paling lama, yang terdapat di beberapa stesen kerja serta banyak mesin Macintosh Klasik dan OS X Macintosh yang lebih lama. Anda sebenarnya masih dapat mencari repositori Ubuntu untuk seni bina ini, walaupun mereka tidak mendapat sokongan hari ini. Walau bagaimanapun, kemungkinan besar anda tidak akan dapat menjalankan banyak binari Linux yang anda muat turun dari Internet di luar repositori rasmi dalam kes ini. Itu tidak bermaksud bahawa Ubuntu tidak berfungsi pada mesin ini, walaupun anda mungkin ingin melihat pengedaran Lubuntu yang lebih ringan.

Kaedah 2: Menggunakan arahan Command

Perintah fail mengenal pasti isi fail yang berbeza, dan biasanya sangat tepat. Cuba kenal pasti fail yang dimaksudkan dengan menaip fail nameOfProgram untuk melihat sama ada anda mendapat ELF 32-bit atau ELF 64-bit sebagai output. Sekiranya ia memberitahu anda bahawa ia adalah ELF 64-bit dan anda menerima i686 sebagai output dari arahan lengkungan, maka tidak mungkin anda boleh menjalankannya dengan wajar pada mesin anda. Sekiranya anda menggunakan mikroprosesor 64-bit yang menjalankan 32-bit Ubuntu, maka secara teknikal anda boleh memasang semula sistem operasi, walaupun ini adalah sedikit langkah ekstrim untuk menjalankan satu program.



Terdapat juga kemungkinan yang sangat nyata, walaupun sedikit, anda mungkin menjumpai binari yang apabila anda cuba menjalankannya memunculkan watak sampah ke terminal walaupun anda telah menjalankan imbasan malware di dalamnya. Karakter-karakter ini biasanya berbentuk bongkah berbentuk lozenge, atau kiub segi empat tepat yang mempunyai nilai berangka di dalamnya. Sebilangan saintis komputer memanggil tahu kedua, dan mewakili nilai Unicode watak yang tidak dapat ditampilkan oleh jenis huruf yang anda pasang sekarang. Sekiranya terminal memaparkannya seperti ini, maka anda boleh yakin bahawa ini bukan kesalahan fon atau apa-apa yang berkaitan dengan perisian hasad. Sebaliknya, ini hanya kerana opcode mikropemproses yang disusun di dalam binari sangat asing bagi sistem anda sehingga tidak tahu bagaimana menafsirkan beberapa kod tersebut.

Cara terbaik untuk memperbaikinya adalah dengan memasang pakej yang sesuai untuk seni bina anda. Sekiranya anda memasang pakej dari dalam Ubuntu, maka sistem apt-get atau pengurus Synaptic grafik telah anda lindungi tanpa masalah. Sekiranya anda memuat turun pakej dari sebaran lain, anda perlu mencari yang sesuai untuk seni bina anda. Contohnya, ambil senarai pakej gvim Arch Linux. Walaupun pakej lalai mempunyai seni bina x86_64, ada juga satu untuk chipset i686. Yang satu ini akan berfungsi pada mesin 32-bit yang berfungsi dengan struktur gangguan Intel, tetapi ingat bahawa istilah i686 dan 32-bit tidak saling merangkumi sepanjang masa kerana chipset lain yang disokong Linux sebenarnya mempunyai pelaksanaan 32-bit mereka sendiri.

Pengguna yang meneroka keseluruhan pemandangan GNU / Linux mungkin menemui binari yang disusun untuk teknologi yang lebih eksotik daripada ini. Linux benar-benar adegan kod lintas platform, jadi anda akan melihat OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha dan banyak binari standard lain disusun untuk digunakan. Kemungkinan besar, anda tidak akan dapat menjalankan semua ini, walaupun ARM adalah platform tablet dan telefon pintar yang sangat popular. Ini juga merupakan platform yang berasaskan Raspberry Pi, yang bermaksud jika anda benar-benar menjalankan Ubuntu pada peranti mudah alih atau pengedaran Ubuntu MATE untuk Raspberry Pi, anda sebenarnya memerlukannya dan bukannya Intel 32-bit atau x86_64 binari.

4 minit membaca