La Cross-Compilazione helloworld per il BRACCIO

Sto cercando una semplice croce di compilazione (cc) per un ARM-CORTEX-A9:
Per mantenere le cose semplici, questo è il codice c:

#include <stdio.h>
int main()
{
   printf("Hello World!\n");
   return 0;
}

La compilazione nativo sul braccio funziona bene ed è iniziato con gcc helloworld.c -o helloworld mentre il cross-compilazione è iniziato con arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_cc

Versione di GCC:

lingua madre: gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) Target: arm-linux-gnueabihf

CC: gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-79) Target: arm-xilinx-linux-gnueabi

ABI da readelf:

readelf-lingua madre: OS: Linux, ABI: 2.6.31
readelf-cc: OS: Linux, ABI: 2.6.16

Collegati libs – la croce è compilato staticamente collegati in modo che non dovrebbe mancare in qualsiasi libs:

[email protected]:/temp# ldd helloworld
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6ed8000)
        /lib/ld-linux-armhf.so.3 (0xb6fce000)
[email protected]:/temp# ldd helloworld_cc
        not a dynamic executable

Il Problema: programma nativo funziona bene, il cc finisce sempre con:

[email protected]:/tmp# ./helloworld_cc
-bash: ./helloworld_cc: No such file or directory

Eventuali suggerimenti, spero di aver compreso abbastanza informazioni.

modifica

Linking statico fa il trucco, ma ora la dimensione del file è enorme (678kB (CC-statico) vs 4kB(nativo)? Perché è mancante libs anche se dice che non è collegato in modo dinamico? Domanda simile: Cross compilazione statica C hello world per Android utilizzando arm-linux-gnueabi-gcc

arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_cc -static
  • Stai cercando eseguire ARM-CORTEX-A9 binario su linux x86?
  • no, non è un Linaro/Ununtu in esecuzione su arm cortex a9 (xillinux su zedboard) xillybus.com/xillinux
  • ok. quindi controllare eseguibile attributo sul binario.
  • ho fatto chmod +x per entrambi, e raddoppiato di controllo graphicaly all’interno del file browser proprietà
  • forse è mancato libreria condivisa sulla piattaforma di destinazione – qui stackoverflow.com/questions/2716702/… e qui askubuntu.com/questions/73491/…
  • Non credo che il semplice esempio ha alcun libs, ho controllato con ldd e si dice che per il cc versione non dyn. collegati. Ho anche aggiornato il mio gcc cc toolchain per abbinare il gcc versione 4.6.3 di destinazione attrezzatura, ancora ricevendo lo stesso errore (a cura di domande)

InformationsquelleAutor eactor | 2013-06-05



One Reply
  1. 9

    Ther un anello mancante nella lib cartella Linaro Ubuntu. Si presentò con readelf -a

    [Requesting program interpreter: /lib/ld-linux.so.3]

    Mettere il link lib/ld-linux.so.3 per lib/arm-linux-gnueabihf/ld-2.15.so

    e funziona.

    Grazie per l’aiuto Sergey

Lascia un commento