Ich habe alle Cross-Compile-Pakete auf meinem Ubuntu-System bisher installiert, habe aber ein Problem und brauche Hilfe.Cross kompilieren von Linux zu ARM-ELF (armv5tejl)
Linux 2.6.28.7 #1 CST 2012 armv5tejl unknown
$ cat /proc/cpuinfo
Processor : ARM926EJ-S rev 5 (v5l)
BogoMIPS : 199.47
Features : swp half fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5
Hardware : ServerEngines PILOT3
Revision : 0000
Serial : 0000000000000000
[email protected]:~/code$ arm-linux-gnueabi-readelf -h xxx.bin
ELF Header:
Magic: 7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: ARM
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0xa27c
Start of program headers: 52 (bytes into file)
Start of section headers: 128752 (bytes into file)
Flags: 0x2, GNU EABI, <unknown>
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 6
Size of section headers: 40 (bytes)
Number of section headers: 25
Section header string table index: 24
Dies ist die Zielmaschine, die ich kompilieren muss. Welche Flags sollte ich beim Kompilieren verwenden?
arm-linux-gnueabi-gcc simple.c -march=armv5 -static -o simplev5
arm-linux-gnueabi-gcc simple.c -mcpu=arm926ej-s -static -o simple926
wenn ich laufe die simplev5 oder simple926, zeigen:
Segmentation fault
folgen @ Steven P Rat, ich das Dateiformat überprüft, wie folgt:
[email protected]:~/code$ file simplev5
simplev5: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=f0607da1d809a7d98636d76ee0e538fc828e3b65, not stripped
[email protected]:~/code$ file simple926
simple926: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=ed1e6fdade02c0d2c985a503dafb6efadd13522f, not stripped
Mögliches Duplikat von http://stackoverflow.com/questions/17336236/cross-compile-from-linux-to-arm-elf-arm926ej-s-mt7108 – lnman
Mögliches Duplikat von [Cross kompilieren von Linux zu ARM-ELF (ARM926EJ-S/MT7108)] (http://stackoverflow.com/questions/17336236/cross-compile-from-linux-to-arm-elf-arm926ej-s-mt7108) ... Dieses 'Linux 2.6.28.7 'ist ziemlich alt und der neueste Ubuntu-Cross-Arm ist wahrscheinlich für ein viel aktuelleres Linux konfiguriert. Selbst wenn '-static' erfolgreich ist, haben Sie immer noch 'swi'-Aufrufe, die möglicherweise nicht zugeordnet werden können. –
[Erstellen eines Cross-Compiler von Grund auf] (http://frank.harvard.edu/~coldwell/toolchain/) könnte hilfreich sein. [Crosstool-ng] (http://crosstool-ng.github.io/) könnte nützlich sein, aber es hat Drop-Unterstützung für mindestens ältere GCC-Versionen und möglicherweise auch Linux-Versionen. Oft benötigen die Dinge kleine Patches, um den Compiler mit veralteten Abhängigkeiten zu erstellen. –