A execução de um programa não gera nenhum erro de arquivo ou pasta [duplicado]

1

Não consigo executar um executável simples.

O resultado de ll

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ ll
total 16948
drwxr-xr-x 2 user user    4096 avril 18  2014 ./
drwxr-xr-x 8 user user    4096 janv. 18 21:01 ../
-rwxr-xr-x 1 user user  565152 avril 18  2014 armv5-ctng-linux-gnueabi-addr2line*
-rwxr-xr-x 2 user user  589764 avril 18  2014 armv5-ctng-linux-gnueabi-ar*
-rwxr-xr-x 2 user user 1035780 avril 18  2014 armv5-ctng-linux-gnueabi-as*
-rwxr-xr-x 2 user user  624784 avril 18  2014 armv5-ctng-linux-gnueabi-c++*
lrwxrwxrwx 1 user user      28 avril 18  2014 armv5-ctng-linux-gnueabi-cc -> armv5-ctng-linux-gnueabi-gcc*
-rwxr-xr-x 1 user user  563424 avril 18  2014 armv5-ctng-linux-gnueabi-c++filt*

e é assim que eu executo armv5-ctng-linux-gnueabi-ar

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ ./armv5-ctng-linux-gnueabi-ar

Isso dá

No such file or folder

O que significa o * no final de cada arquivo - existe algo especial?

EDITAR

Propsed manip por @Arkadiusz Drabczyk:

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ readelf -a armv5-ctng-linux-gnueabi-ar | grep "Requesting program interpreter:"
  [Requesting program interpreter: /lib/ld-linux.so.2]

Propsed manip por @steeldriver:

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ arch
x86_64

Estou usando um sistema operacional de 64 bits.

user@user-SATELLITE-C855-169:~/Bureau/Workspace/buildroot/buildroot/output/host/opt/ext-toolchain/bin$ file armv5-ctng-linux-gnueabi-ar
armv5-ctng-linux-gnueabi-ar: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=8dac66869f5be2dbb2bee517e289901c4be80db5, stripped

O binário parece funcionar com uma arquitetura de 32 bits ELF 32-bit .

    
por Mouin 18.01.2017 / 21:32

1 resposta

1

Any help, what is meant by the * in the end of each file is there sth special?

Seu ll alias pode conter a opção -F , que adiciona um caractere após um nome de arquivo. De man ls :

   -F, --classify
          append indicator (one of */=>@|) to entries

Em muitos shells, como bash , você pode verificar como um alias é expandido usando o comando type . Por exemplo, no meu sistema:

$ type ll ll is aliased to 'ls -Alhtr --color'

Agora, você disse que o arquivo que fornece o erro é um binário, então pode ser devido a um carregador incorreto. Tente o carregador que ele solicita e verifique se você o tem:

$ readelf -a armv5-ctng-linux-gnueabi-ar | grep "Requesting program interpreter:"

Se o binário for designado para executar em x32 system, ele solicitará um interpretador x32 de /lib . Se você não tiver, não será iniciado. Então, agora, dependendo do sistema que você usa, você precisa encontrar uma maneira de adicionar camada de compatibilidade de 32 bits ao seu sistema. Por exemplo, em Ubuntu é simples - apenas um único apt-get install fará o trabalho, pois Slackware está descrito aqui: link .

    
por 18.01.2017 / 21:48