Hallo zusammen,
ich muss mal wieder nachfragen, da ich ein Problem mit dem
CrossCompiling habe. Ich hab es bis jetzt nicht geschafft eine
Cross-Toolchain für mein Arietta G25 zu basteln, wesswegen ich die
glorreiche Idee hatte eine andere Toolchain zu nehmen. Im Netz hab ich
eine Toolchain mit dem Namen
"gcc-linaro-arm-linux-gnueabi-2012.04-20120426_win32" gefunden, die
meiner Ansicht nach am besten passen sollte. Leider kenn ich mich mit
GCC nicht so gut aus, und hab bis jetzt noch keine einfache und kurze
Doku gefunden, die für mich die grobe Struktur von GCC darlegt. Nun hab
ich versucht mit der Toolchain ein Hello World Programm zu übersetzten.
Ich bekomme eine Binary, die ich allerdings nicht ausführen kann. Ich
bekomme nur die Fehlermeldung :"Illegal Instruction". Ich hab keine
Ahnung, wieso die Datei nicht läuft. Zum testen hab ich noch eine Datei
auf dem Arietta erstellt und mit der anderen Binärdatei verglichen.
Nativ übersetzt:
1 | $ readelf -h nativ.ex
|
2 | ELF Header:
|
3 | Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
|
4 | Class: ELF32
|
5 | Data: 2's complement, little endian
|
6 | Version: 1 (current)
|
7 | OS/ABI: UNIX - System V
|
8 | ABI Version: 0
|
9 | Type: EXEC (Executable file)
|
10 | Machine: ARM
|
11 | Version: 0x1
|
12 | Entry point address: 0x831c
|
13 | Start of program headers: 52 (bytes into file)
|
14 | Start of section headers: 1840 (bytes into file)
|
15 | Flags: 0x5000002, has entry point, Version5 EABI
|
16 | Size of this header: 52 (bytes)
|
17 | Size of program headers: 32 (bytes)
|
18 | Number of program headers: 8
|
19 | Size of section headers: 40 (bytes)
|
20 | Number of section headers: 31
|
21 | Section header string table index: 28
|
22 |
|
23 | $ file nativ.ex
|
24 | nativ.ex: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=48c5786788dcb15d1deb1dc748139f8feaf67da6, not stripped
|
Cross-Compiled
1 | $ readelf -h a.out
|
2 | ELF Header:
|
3 | Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
|
4 | Class: ELF32
|
5 | Data: 2's complement, little endian
|
6 | Version: 1 (current)
|
7 | OS/ABI: UNIX - System V
|
8 | ABI Version: 0
|
9 | Type: EXEC (Executable file)
|
10 | Machine: ARM
|
11 | Version: 0x1
|
12 | Entry point address: 0x8768
|
13 | Start of program headers: 52 (bytes into file)
|
14 | Start of section headers: 359072 (bytes into file)
|
15 | Flags: 0x5000002, has entry point, Version5 EABI
|
16 | Size of this header: 52 (bytes)
|
17 | Size of program headers: 32 (bytes)
|
18 | Number of program headers: 6
|
19 | Size of section headers: 40 (bytes)
|
20 | Number of section headers: 29
|
21 | Section header string table index: 26
|
22 |
|
23 | $ file a.out
|
24 | a.out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.26, BuildID[sha1]=f1ec2054a52be7f57b66b6b4d49fad06407c6613, not stripped
|
Wo liegt das Problem? Was muss ich an der Toolchain ändern, damit ich
für das Arietta Programme erstellen kann?
Gruß,
SIGINT