Bash: ./ nazwa pliku: Nie można uruchomić pliku binarnego

37

Nie mogłem wykonać skompilowanego kodu fortran w 32-bitowym Ubuntu 11.10.

Komunikat o błędzie to

bash: ./filename : Cannot execute binary file.

Zainstalowałem również biblioteki gcc i gfortran.

Czy ktoś może pomóc?

$ file um
um: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped 
użytkownik87654
źródło
6
Wpisz file filenamei zgłoś wyniki.
stycznia
nazwa pliku to um.exe, a wynik to bash: ./um nie może wykonać pliku binarnego
użytkownik87654
2
To nie wygląda jak natywny program Linux. Spróbuj użyć wina.
Lekensteyn,
ten plik wykonywalny jest kompilowany przy użyciu pliku make, który kompiluje zestaw kodów fortran. ten plik exe jest wykonany w maszynie fedora
użytkownik87654
1
Wpisz file um.exelub file um(w zależności od nazwy pliku binarnego). Jednak prawdopodobnie wygenerowane pliki binarne są z jednego powodu lub innych plików binarnych systemu Windows. Ponadto, jeśli program jest publiczny, możesz opublikować link do źródeł. Lub po prostu opublikuj plik makefile tutaj.
stycznia

Odpowiedzi:

38

Jak widać z danych wyjściowych file umopublikowanych w komentarzu, Twój plik binarny jest plikiem 64-bitowym.

Systemy 32-bitowe nie mogą uruchamiać 64-bitowych plików binarnych, działa tylko na odwrót.

Elmicha
źródło
3
Jest to najczęstszy powód, dla którego widziałem ten problem, użycie go fileszybko zidentyfikuje.
mikebabcock
Więc nie ma na to rozwiązania?
JohnMerlino
@JohnMerlino Albo dostarcz sprzętowi odpowiedni zestaw instrukcji i system operacyjny, który to umożliwia (sprzęt AMD64 i system operacyjny dla programów AMD64). lub symuluj / emuluj / wirtualizuj (Virtual Box / JVM / ...) lub uzyskaj wersję zestawu instrukcji. Nie można uruchomić Oprogramowania dla innych Instrukcji ustawionych jako Programy rodzime.
12431234123412341234123,
3

Spróbuj zrobić plik wykonywalny

chmod +x um.exe

Następnie spróbuj go uruchomić

./um.exe

Ale jeśli jest to plik exe skompilowany dla systemu Windows, prawdopodobnie musisz zainstalować Wine.

Carestad
źródło
3

Innym rozwiązaniem dla osób, które mają ten problem, z wyjątkiem części o niedopasowanych bitach, jest uruchomienie pliku bez polecenia „bash”.

Wystarczy użyć, chmod +x 'path to the file'a następnie uruchomić 'the path to the file'w terminalu. W ten sposób rozwiązałem mój problem.

Onurhan
źródło
0

Innym możliwym źródłem tego błędu: próba uruchomienia binarnego pliku wykonywalnego Linuksa na komputerze Mac lub odwrotnie.

Na przykład próbuję uruchomić trueplik binarny z mojego komputera Mac na komputerze Ubuntu, do którego SCPedowałem go:

$ ./mactrue 
-bash: ./mactrue: cannot execute binary file: Exec format error

Jeśli pobrałeś plik binarny i wykonanie go nie powiedzie się z powodu tego błędu, sprawdź, czy pobrałeś wersję dla niewłaściwego systemu operacyjnego.

Mark Amery
źródło
0

Dla mnie skopiowanie pliku binarnego do aplikacji na komputerze Mac, a następnie na ścieżkę, pomieszało go na komputerze Mac. Jestem prawie pewien, że folder Aplikacje zamienił plik binarny na Alias ​​zamiast rzeczywistego pliku binarnego.

-bash: /usr/local/bin/terraform: cannot execute binary file
mike$ file /usr/local/bin/terraform 
/usr/local/bin/terraform: MacOS Alias file

Ponownie rozpakowałem plik binarny z moich pobrań i po prostu wprowadziłem mvgo na moją ścieżkę i działał dobrze.

mike$ file /usr/local/bin/terraform
/usr/local/bin/terraform: Mach-O 64-bit executable x86_64
Michael Davidson
źródło