2010-10-16 17 views
53

Voglio semplicemente eseguire un file eseguibile dalla riga di comando, ./arm-mingw32ce-g++, ma poi ho il messaggio di errore,"No such file or directory", ma esiste

bash: ./arm-mingw32ce-g++: No such file or directory

Io corro Ubuntu Linux 10.10. ls -l liste

-rwxr-xr-x 1 root root 433308 2010-10-16 21:32 arm-mingw32ce-g++

uso di sudo (sudo ./arm-mingw32ce-g++) dà

sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory

Non ho idea del perché il sistema operativo non può nemmeno vedere il file quando è lì. qualche idea?

risposta

53

Questo errore può significare che ./arm-mingw32ce-g++ non esiste (ma lo è) o che esiste ed è un eseguibile collegato dinamicamente riconosciuto dal kernel ma il cui caricatore dinamico non è disponibile. È possibile visualizzare quale caricatore dinamico è richiesto eseguendo ldd /arm-mingw32ce-g++; qualsiasi cosa contrassegnata con not found è il caricatore dinamico o una libreria che è necessario installare.

Se stai cercando di eseguire un binario a 32 bit su un'installazione amd64:

  • Fino a Ubuntu 11.04, installare il pacchetto ia32-libs.
  • Su Ubuntu 11.10, installare ia32-libs-multiarch.
  • A partire da 12.04, installare ia32-libs-multiarch o selezionare un set ragionevole di pacchetti :i386 oltre ai pacchetti :amd64.
+8

Impressionante, funziona! A proposito, l'output di ldd era "non un eseguibile dinamico" (prima ho installato ia32-libs). – Warpspace

+3

One upvote, per la punta del caricatore a 32 bit sull'installazione a 64 bit! – Dinaiz

+0

Questo mi stava facendo impazzire. Funziona perfettamente. – LeviX

3

Ho ricevuto lo stesso errore per un semplice script bash che non avrebbe problemi 32/64-bit. Questo è probabilmente perché lo script che stai tentando di eseguire ha un errore in esso. Questo ubuntu forum post indica che con i normali file di script è possibile aggiungere 'sh' in primo piano e si potrebbe ottenere un output di debug da esso. per esempio.

$ sudo sh arm-mingw32ce-g++ 

e vedere se si ottiene qualsiasi output.

Nel mio caso il problema reale era che il file che stavo cercando di eseguire era in formato Windows piuttosto che Linux.

11

Questo errore può verificarsi anche se si tenta di eseguire uno script e l'errore shebang è errato. Assicurati che legga #!/bin/sh, #!/bin/bash o qualsiasi interprete che stai utilizzando.

+2

Mi riferisco a un eseguibile, non a uno script.Poi di nuovo, qualcun altro potrebbe trovare utile questo commento – Warpspace

+0

Vero, ma sono atterrato su questa domanda per questo problema esatto, così come hai detto, forse anche qualcun altro lo farà. –

+0

Nel mio caso, stavo cercando di eseguire './My/full/path/myscript' invece di'./Myscript'. – Noumenon

1

Ho avuto lo stesso problema con un file che ho creato sul mio mac. Se provo a eseguirlo in una shell con ./filename ho ricevuto il messaggio di errore non trovato. Penso che qualcosa non andasse nel file.

quello che ho fatto:

aprire una sessione ssh al server
cat nomefile
copiare l'uscita negli appunti
rm nomefile
tocco nome
vi filename
i per l'inserimento modalità
incollare il contenuto dagli Appunti
ESC per terminare la modalità inserimento
: wq!

Questo ha funzionato per me.

+0

Primitivo ma funziona ..;) – Rotem

5

Ho avuto lo stesso messaggio di errore quando cercavo di eseguire uno script Python - questo non era il caso d'uso di @ Warpspace (vedi altri commenti), ma questo era tra i migliori risultati della mia ricerca, quindi forse qualcuno lo troverà utile.

Nel mio caso erano le terminazioni di linea DOS (\r\n anziché \n) che la linea di shebang (#!/usr/bin/env python) avrebbe inciampato. Un semplice dos2unix myfile.py risolto.

10

Ho affrontato questo errore quando stavo cercando di compilare il sorgente Selenium su Ubuntu. Lo script di shell semplice con shebang corretto non era in grado di funzionare anche dopo aver coperto tutti i prerequisiti.

file file-name # helped me in understanding that CRLF ending were present in the file. 

ho aperto il file in Vim e ho potuto vedere che solo perché una volta ho modificato questo file su una macchina Windows, era in formato DOS. Ho convertito il file in formato Unix con il comando di seguito:

dos2unix filename # actually helped me and things were fine. 

Spero che dovremmo fare attenzione ogni volta che modificare i file su più piattaforme dovremmo prendere cura per i formati di file come bene.

+0

sì. 'dos2unix nomefile' mi ha salvato la giornata. – richie

+0

funziona per me, grazie. – meadlai

0

Ho ricevuto questo errore “No such file or directory” ma esiste perché il mio file è stato creato in Windows e ho provato a eseguirlo su Ubuntu e il file conteneva 15 \ r non valido dove mai c'era una nuova linea. Ho appena creato un nuovo file troncando roba indesiderata

sleep: invalid time interval ‘15\r’ 
Try 'sleep --help' for more information. 
script.sh: 5: script.sh: /opt/ag/cont: not found 
script.sh: 6: script.sh: /opt/ag/cont: not found 
[email protected]:/home/abc12/Desktop# vi script.sh 
[email protected]:/home/abc12/Desktop# od -c script.sh 
0000000 # ! / u s r / b i n / e n v  b 
0000020 a s h \r \n w g e t  h t t p : /

0000400 : 4 1 2 0 /\r \n 
0000410 
[email protected]:/home/abc12/Desktop# tr -d \\015 <script.sh> script.sh.fixed 
[email protected]:/home/abc12/Desktop# od -c script.sh.fixed 
0000000 # ! / u s r / b i n / e n v  b 
0000020 a s h \n w g e t  h t t p : //

0000400 /\n 
0000402 
[email protected]:/home/abc12/Desktop# sh -x script.sh.fixed 
0

Ho appena avuto questo problema in mingw32 bash. Avevo eseguito il nodo/npm da Program Files (x86)\nodejs e quindi li ho spostati nella directory disabled (essenzialmente rimuovendoli dal percorso). Ho anche avuto Program Files\nodejs (cioè versione a 64 bit) nel percorso, ma solo dopo la versione x86. Dopo aver riavviato la shell bash, è stata trovata la versione a 64 bit di npm. node ha funzionato correttamente tutto il tempo (verificato con node -v modificato quando è stata spostata la versione x86).

Penso hash -r avrei lavorato invece di bash riavviare: https://unix.stackexchange.com/a/5610

Problemi correlati