Não é possível executar apenas o arquivo binário compilado

0

E mais uma vez, pergunta típica: "não é possível executar o arquivo executável".

Eu instalei o Virtual Box ver: 4.2.16 e naquele Ubuntu.

Eu compilei vários códigos fotran com o comando (talvez deva ser notado que eu estava naquele momento pedindo para instalar o gfortran, então eu fiz.):

gfortran -o iri iritest.for irisub.for irifun.for iritec.for iridreg.for igrf.for cira.for iriflip.for

Recebi alguns avisos, mas nenhum erro. Então eu escrevi . iri e consegui:

 bash: . : iri: cannot execute binary file

Como eu li muitos A / Q sobre isso nesta página: aqui estão as informações úteis:

uname -a

Linux pavel-VirtualBox 3.5.0-43-genereic #66~precise1-Ubuntu SMP Thu Oct 24 14:55:08 UTC 2013 i686 i686 i 386 GNU/Linux

arquivo iri

iri: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (used shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xac4e2cda297fb7fc0dbea9bff7c88dfdb417c297, not stripped

arquivo / bin / bash

/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (used shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x64552078250a29637d1678751065aa4b5ee35222, not stripped

Eu também tentei chmod +x iri e obtive o mesmo resultado. No entanto, acho que isso é desnecessário, já que a saída de ls -l antes era:

-rwxrwxr-x 1 pavel pavel 1170853 Nov 10 13:30 iri

Eu também enviei o arquivo para o Windows e, claro, ele não tem ideia do que fazer com ele. Como o arquivo e as especificações do sistema operacional são os mesmos, não tenho idéia do porque o Ubuntu se recusa a executar o arquivo. Você tem uma ideia?

    
por MasterPJ 10.11.2013 / 14:12

1 resposta

1

Para executar um arquivo binário que esteja no diretório atual (mas não no caminho do executável), a sintaxe correta é

./iri

(observe o / ). O comando que você deu (com um espaço entre o . e o nome do arquivo) tenta fornecer o arquivo como um script no shell atual - veja help source

$ . hello
bash: .: hello: cannot execute binary file
$ 
$ ./hello
Hello world!
$ 
    
por steeldriver 10.11.2013 / 14:28