Hoe te repareren 'can not execute binary file: Exec format error' op Ubuntu
Hoewel het niet zou moeten gebeuren als je de officiële apt-get repositories gebruikt, als je software downloadt van het internet en het uitvoert, bestaat de kans dat je de gevreesde bash ziet: ./nameOfProgram: kan het binaire bestand niet uitvoeren: Exec-formaat fout . Deze fout, die meestal wordt gevolgd door bash: ./nameOfProgram.sh: Toestemming geweigerd of iets dergelijks, geeft aan dat Ubuntu niet in staat was om correct te interfacen met de binary die je hebt gedownload. Dit komt omdat het blijkbaar een geldig Linux binair bestand is, maar het is ontworpen voor een andere chipset dan je kernel op dit moment ondersteunt.
De meeste mensen die Ubuntu gebruiken zijn op 32-bit of 64-bit processors gebaseerd op een standaard architectuur die Intel heeft uitgebracht, ongeacht wie daadwerkelijk hun microchips heeft gemaakt. Het is belangrijk om te onthouden dat 64-bits processors in de 32-bits modus kunnen worden uitgevoerd, dus als u deze fout krijgt, ook al heeft u een 64-bits processor, bestaat de kans dat u een 32-bits versie van Ubuntu gebruikt. Een paar eenvoudige commando's zijn voldoende om te vertellen hoe uw chip werkt.
Methode 1: Het boog-commando gebruiken
Als u niet bekend bent met het type microprocessor dat u op uw computer hebt geïnstalleerd, dan wilt u eerst de opdracht arch gebruiken vanaf de opdrachtregel. U zult slechts één enkele regel output zien teruggekeerd na het uitvoeren van deze opdracht. In veel gevallen wordt i686 weergegeven, wat betekent dat u zich op een 32-bits processor bevindt en daarom geen x86_64-binaire bestanden kunt uitvoeren. Als u in plaats daarvan amd64 of iets dergelijks ziet, dan bent u op een x86_64-processor en zou u op zijn minst theoretisch de meeste 32-bit en 64-bit binaries kunnen uitvoeren. In tegenstelling tot Microsoft Windows, bevat Ubuntu Linux eigenlijk de juiste tools om gebruikers van 644-bit chipsets 16-bit Windows-programma's in hun besturingssysteem ook in veel gevallen te laten uitvoeren.
Deze voorwaarden zijn nog steeds geldig, zelfs als u dat specifieke model van de microchip niet daadwerkelijk gebruikt. I686 is bijvoorbeeld de manier waarop Linux naar veel 32-bits processors verwijst, zelfs als het niet om Intel 80686-chips gaat. Zelfs als u 64-bits Intel-technologie gebruikt, kan arch uw processor nog steeds een amd64-chip noemen. Dit duidt niet op een fout en kan veilig worden genegeerd. Je kunt cat / proc / cpuinfo of more / proc / cpuinfo gebruiken om uit te vinden welk type processor je gebruikt. Omdat de regels in dit bestand lang zijn, wilt u misschien eerst op F11 drukken voordat u het gebruikt, als u een grafisch terminalvenster gebruikt. Gebruikers van een virtuele console, vooral degenen die werken met de Ubuntu-server, hoeven zich minder zorgen te maken.
Mogelijk ziet u een aantal andere soorten uitvoer, waardoor uw opties verder kunnen worden beperkt als het gaat om het uitvoeren van software. Ubuntu ondersteunde PowerPC-architectuur de langste tijd, die te vinden is op sommige werkstations, evenals op veel klassieke Macintosh- en oudere OS X Macintosh-machines. Je kunt nog steeds Ubuntu-repositories vinden voor deze architecturen, hoewel ze vandaag weinig ondersteuning krijgen. U zult echter meer dan waarschijnlijk niet in staat zijn om veel Linux binaries uit te voeren die u downloadt van het internet buiten de officiële repositories in dit geval. Dat betekent niet dat Ubuntu niet op deze machines werkt, hoewel je misschien de lichtere Lubuntu-distributie wilt bekijken.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikkenMethode 2: Gebruik van het bestandscommando
De bestandsopdracht geeft aan wat verschillende bestanden bevatten en is meestal erg nauwkeurig. Probeer het betreffende bestand te identificeren door bestandsnaamOfProgram in te voeren om te zien of u ELF 32-bit of ELF 64-bit als uitvoer krijgt. Als het je vertelt dat het een ELF 64-bits binair getal is en je hebt i686 ontvangen als uitvoer van de opdracht arch, dan is er geen manier waarop je het redelijkerwijs op je computer kunt uitvoeren. Als u een 64-bits microprocessor met 32-bits Ubuntu gebruikt, kunt u het besturingssysteem technisch opnieuw installeren, hoewel dit een beetje een extreme stap is om een enkel programma uit te voeren.
Er is ook de zeer reële mogelijkheid, hoe gering ook, dat je in plaats daarvan een binary tegenkomt die, wanneer je het probeert uit te voeren, junk characters uitwerpt naar de terminal, zelfs als je er een malware-scan op hebt uitgevoerd. Deze tekens hebben meestal de vorm van ruitvormige blokken of rechthoekige blokken met numerieke waarden erin. Sommige computerwetenschappers noemen de laatste tofu en vertegenwoordigen de Unicode-waarden van tekens die uw momenteel geïnstalleerde lettertypen niet kunnen weergeven. Als de terminal ze op deze manier weergeeft, kunt u er zeker van zijn dat dit geen lettertypefout is of iets anders dat met malware te maken heeft. Integendeel, dit is simpelweg omdat de gecompileerde microprocessor-opcode in het binaire systeem zo vreemd is voor uw systeem dat het niet weet hoe een deel van de code moet worden geïnterpreteerd.
De beste manier om dit te verhelpen is om het juiste pakket voor uw architectuur te installeren. Als u pakketten installeert vanuit Ubuntu, hebt u zonder problemen toegang tot het apt-get-systeem of de grafische Synaptic-manager. Als u pakketten van een andere distributie downloadt, moet u de juiste voor uw architectuur vinden. Neem bijvoorbeeld Arch Linux's lijst van het gvim-pakket. Hoewel het standaardpakket de x86_64-architectuur bevat, is er ook een voor de i686-chipset. Deze zal werken op 32-bit machines die werken met de Intel interrupt-structuur, maar onthoud dat de voorwaarden i686 en 32-bit niet altijd inclusief zijn, omdat andere chipsets die Linux ondersteunt feitelijk over hun eigen 32-bit-implementaties beschikken.
Gebruikers die de hele GNU / Linux-scène verkennen, kunnen binaire bestanden tegenkomen die zijn gecompileerd voor veel meer exotische technologieën dan deze. Linux is echt een platformonafhankelijke codescène, dus je zult zien dat OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha en vele andere standaardbinaire binaries zijn samengesteld om mee te werken. Meer dan waarschijnlijk zult u geen van deze kunnen uitvoeren, hoewel ARM een extreem populair tablet- en smartphoneplatform is. Het is ook het platform waarop de Raspberry Pi is gebaseerd, wat betekent dat als je Ubuntu daadwerkelijk gebruikt op een mobiel apparaat of de Ubuntu MATE-distributie voor Raspberry Pi, je deze in plaats van Intel 32-bit of x86_64 binaries nodig hebt.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken