2013-06-05 11 views
12

Próbuję prosty krzyż kompilacji (cc) dla ARM Cortex-A9: Aby zachować rzeczy proste thats c-Code:Krzyż kompilacji helloworld dla ARM

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

Natywna na kompilacji ramię działa dobrze i jest uruchamiany z gcc helloworld.c -o helloworld natomiast krzyż kompilacji jest uruchamiany z arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_cc

GCC wersja:

Nativ: 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 z readelf:

readelf-Nativ: OS: Linux, ABI: 2.6.31 readelf-CC: OS: Linux, ABI: 2.6.16

Linked libs - w cross compiled jest statycznie połączony, więc nie powinien przegap żadnych bibliotekami:

[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 

Problem: natywny program działa w porządku, cc zawsze kończy się:

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

Wszelkie wskazówki, mam nadzieję, mam włączone wystarczających informacji.

edit

Powiązanie to statyczne załatwia sprawę, ale teraz wielkość pliku jest ogromny (678kB (CC-static) vs. 4kB (native)? Dlaczego brakuje bibliotekami nawet jeśli mówi to nie jest dynamicznie połączone Podobne pytanie:?. Cross compiling static C hello world for Android using arm-linux-gnueabi-gcc

arm-xilinx-linux-gnueabi-gcc helloworld.c -o helloworld_cc -static 
+0

Czy próbujesz uruchomić binarne ARM-CORTEX-A9 na Linuksie x86? –

+0

no to Linaro/Ununtu działa na ramieniu cortex a9 (xillinux na zedboard) http://xillyinux.com/xillinux – eactor

+0

ok. następnie sprawdź plik wykonywalny na twoim pliku binarnym. –

Odpowiedz

8

Ther był brakującym ogniwem w folderze lib Linaro Ubuntu to pokazało się z readelf -a

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

Umieszczenie linku lib/ld-linux.so.3 do lib/arm-linux-gnueabihf/ld-2.15.so

i to działa.

Dzięki za pomoc Sergey

+1

Ten post jest stary, ale mam podobny problem do Ciebie, ale nie mogę go rozwiązać, więc zastanawiam się, czy mógłbyś rzucić okiem na moje pytanie - http://stackoverflow.com/questions/39920945/cross-compile-qt-5-helloworld-app-for-armv7l – kaushal