Forum: Compiler & IDEs elf-Format os/abi ändern gcc ld


von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Ich habe einen Embedded  ARM9 und habe die ELDK von DENX als 
Crosscompiler eingesetzt.

Für das Board habe ich eine funktionierende Busybox und jetzt wollte ich 
eine eigene Busysbox compilieren.  Diese lief nie "Ilegal Instruction" 
kam immer als Fehlermeldung. Jetzt habe ich die beiden elf Dateien mir 
angeschaut und eine gravierenden Unterschied im Header gefunden.
Die Datei mit OS/ABI ARM läuft.

Dazu habe ich zwei Fragen. wie kann ich das einstellen beim kompilieren?
Gibt es eine Kompileroption für das OS/ABI?


Oder die andere Lösung wie kann ich die OS/ABI Unix starten. Ich habe 
einen Linuxkernel, der sollte doch das Format kennen.


Selbst ein einfaches Hallo World funktioniert nicht.
Hier ist mein Problem.
Hat jemand eine Idee, wie ich es besser machen könnte.



/rootfs/bin> readelf -h busybox
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:               0xd254
 Start of program headers:          52 (bytes into file)
 Start of section headers:          699004 (bytes into file)
 Flags:                             0x2, has entry point, GNU EABI
 Size of this header:               52 (bytes)
 Size of program headers:           32 (bytes)
 Number of program headers:         5
 Size of section headers:           40 (bytes)
 Number of section headers:         23
 Section header string table index: 22


linux-arm/busybox/busybox-1.13.2/_install/bin>readelf
ELF Header:
 Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
 Class:                             ELF32
 Data:                              2's complement, little endian
 Version:                           1 (current)
 OS/ABI:                            UNIX - System V
 ABI Version:                       0
 Type:                              EXEC (Executable file)
 Machine:                           ARM
 Version:                           0x1
 Entry point address:               0x9d70
 Start of program headers:          52 (bytes into file)
 Start of section headers:          1818056 (bytes into file)
 Flags:                             0x4000002, has entry point,
Version4 EABI
 Size of this header:               52 (bytes)
 Size of program headers:           32 (bytes)
 Number of program headers:         5
 Size of section headers:           40 (bytes)
 Number of section headers:         26
 Section header string table index: 25
red@91-67-201-37-dynip:~/linux-arm/busybox/busybox-1.13.2/_install/bin>

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.