Sono curioso circa la fattibilità di esecuzione vecchi programmi ARM32-Linux su macchine AARCH64-Linux e ho condotto alcuni esperimenti: "Ciao, mondo!"I vecchi file binari ARM32 possono essere eseguiti sul kernel AARCH64?
- scrivere un programma e compilarlo staticamente con arm-none-linux-gnueabi-gcc e aarch64-linux-gnu-gcc.
- crea e crea un disco RAM in modo statico utilizzando il compilatore busybox e aarch64.
- inserire il 2 "Hello, World!" programmi (in ARM32 e AARCH64) nel ramdisk.
- crea un semplice kernel AARCH64-Linux con il compilatore vexpress_defconfig e aarch64.
- esegue il kernel e ramdisk utilizzando qemu-system-aarch64.
(Tutti i file binari tra busybox nel ramdisk sono compilati staticamente.)
Risultato: "Ciao, mondo"
- il programma in AARCH64 è stato eseguito con successo.
- "Ciao, mondo!" programma nel ARM32 non può essere eseguito, ma mostra i messaggi:
linea 1: errore di sintassi: parola inaspettata (aspettano ")")
C'è suggerimento o le competenze per risolvere il problema di cui sopra?
Una domanda interessante. Ma sono abbastanza sicuro che si tratti di un problema ABI, non di un problema linguistico. –
Stai usando un kernel non standard? Mainline arm64 [non ha un vexpress_defconfig] (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/configs), e non avresti colpiscilo con l'arm64 defconfig (dove i bit necessari sono abilitati di default). – Notlikethat