linux non può eseguire file binari


0

Di recente sto facendo un progetto C ++ in Linux. Ho un file eseguibile in Linux. Ho provato ad eseguirlo e ho mostrato un errore: impossibile eseguire il file binario. Ho visto domande simili qui in SO e hanno detto che questa situazione è accaduta quando le persone hanno provato a eseguire un programma x86 in una CPU ARM. Ma il problema è che sto usando una CPU Intel i5 3230m e questa dovrebbe essere l'architettura x86. Piuttosto strano.

C'è un altro problema che penso possa essere collegato a questo. Quando installo il sistema Linux nel player WMware. Inizialmente ho provato a installare Centosx86_64 ma non ci sono riuscito (il mio laptop dovrebbe essere un sistema a 64 bit). Ho dovuto passare a Centosi386 per averlo fatto. Quindi questo si riferiva anche alla versione di WMware Player?

Qualcuno può aiutarmi un po 'su questo? Grazie!

Aggiornamento: Ok, ho provato a usare il file e ottengo che questo è un file a 64 bit. (ELB a 64 bit bit LSB, x86-64, versione 1 (GNU / Linux), collegato dinamicamente (usa librerie condivise), per GNU / Linux 2.6.24, non spogliato) E proprio ora ho provato lscpu (). Che sorpresa mostra architettura: i686 cpu op-mode: 32bit. Come è potuto accadere? Il mio processore ha un'architettura a 32 bit ?!


Non hai detto quale sia il tuo sistema host, ma se è a 32 bit, non puoi eseguire programmi a 64 bit in modo nativo o in una VM. Se si ricorda Windows 3 (un sistema operativo a 16 bit) c'era un'estensione che permetteva di eseguire programmi a 32 bit. Purtroppo, nessuno ha fatto la stessa cosa per consentire ai programmi a 64 bit di funzionare su un sistema operativo a 32 bit, sebbene non riesca a vedere che il problema è maggiore. La tua unica soluzione è installare un host a 64 bit.
AFH

Hai compilato il file eseguibile dal codice sorgente sulla stessa installazione di Linux in cui stai tentando di eseguirlo?
Ale

Il mio sistema host è un sistema Windows a 64 bit e un processore basato su X64 (posso vedere che formano la proprietà del sistema). Questo è un nuovo laptop che ho comprato l'anno scorso con 6 GB di RAM. Ho sempre pensato che fosse 64 bit, come potrebbe accadere che ora mi venga detto che questo è 32 bit?
user3833612

@ AFH: Win32s aveva molte limitazioni rispetto a a vero Versione a 32 bit di Windows. E richiedeva, in ogni caso, una CPU fisica a 32 bit. Poiché Linux a 64 bit è facilmente disponibile, un tale ambiente a 64 bit per Linux a 32 bit (probabilmente con tutte le restrizioni su ciò che può essere eseguito con Win32s) sarebbe solo un sacco di lavoro da sviluppare e mantenere, mentre c'è un alternativa molto più semplice prontamente disponibile.
Ale

@ user3833612 Ti dice 32-bit probabilmente perché hai una versione a 32 bit di Linux installata. Puoi controllare il tuo tipo di CPU (cat / proc / cpuinfo)? Quindi puoi essere sicuro di avere uno a 64 bit.
Ale
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.