Qual é a diferença entre ARM e armv71? [fechadas]

0

Edite para pessoas que procuram isso no futuro: Meu entendimento agora é que "Nenhum arquivo ou diretório desse tipo" é enganoso. Se você tem um elfo, você o executa por chmod a + x e ./programname.elf. O motivo pelo qual ele falhou no meu sistema é que elf pode significar (e neste caso) que você tem um executável vinculado dinamicamente. Como o SDK que usei foi vinculado dinamicamente, o código-fonte para as funções de terceiros usadas pelo SDK não é incorporado ao elfo. Um executável vinculado dinâmico simplesmente procura todas as inclusões necessárias quando é executado, um executável vinculado estático tem todo o código necessário gravado no binário quando ele é compilado. A solução para meu problema parece ser descobrir como fazer o SDK compilar meu programa estaticamente, ou descobrir como fazer uma biblioteca vinculada estaticamente contendo as funções relevantes que preciso e construir meu programa nativamente na plataforma de destino usando isso. / p>

Eu tento executar um elf com bash./program.elf, mas obter resposta "não pode executar o arquivo binário".

Executando o arquivo program.elf dá

file.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1(SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped

Execução de uname -a dá

Linux analog 3.19.0-g7f929ec #1 SMP PREEMPT Thu Sep 3 18:06:48 EEST 2015 armv71 armv71 armv71 GNU/Linux

Ambos dizem ARM, então por que este programa não funciona?

Por sugestão de alguém, aqui está o readelf-A ./program.elf

Attribute Section: aeabi
File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_rounding: Needed
    Tag_ABI_FP_denomal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    
por Zephyr 12.07.2016 / 19:18

2 respostas

1

O comando bash ./program.elf enviará o arquivo por meio do intérprete bash.

Um arquivo elf é um arquivo binário compilado e deve ser executado a partir da linha de comando da seguinte forma: ./program.elf

Não se esqueça de definir o bit executável para o arquivo com:

chmod a+x ./program.elf
    
por 12.07.2016 / 20:43
0

Pelo que eu posso dizer, é muito mais comum um processador ARMv7 ser o modelo ARMv7-A (o tipo usado para o Snapdragon 600/800 no Galaxy S4 e Nexus 5, respectivamente, assim como o Raspberry Pi 2 / model B), no entanto, sua saída lista o chip do sistema como um ARMv71 (também conhecido como o ARMv7 Revisão 1). Parece inteiramente possível que a variante do SDK do processador ARMv7 que você selecionou ao compilar / construir o programa fosse simplesmente o subconjunto errado do ARMv7, semelhante ao que você pretendia construir para o ARMv7-A e construído para o ARMv7-M. Agora, isso é apenas um palpite, já que não tenho ideia de para qual processador / dispositivo você estava construindo, mas considerando o quanto os processadores SoC são exigentes quando se trata de executar programas não compilados especificamente para eles, sugiro compilar a origem diretamente na máquina em questão, se possível.

    
por 12.07.2016 / 20:24

Tags