Wie kompilieren Sie ein C Programm zu einem gültigen ELF-Format (oder RAW-Format), so dass es direkt aus dem RAM ohne OS ausgeführt werden kann? Angenommen, es existiert ein Bootloader, der in der Lage ist, den Code an eine beliebige Stelle im RAM zu laden und die Ausführung unter dieser Adresse zu starten. Um genau zu sein, was sollte der Compiler (GCC) Flags sein? Benötigen Sie eine Map-Datei?Ausführung ohne O
würde Eine Probe Hello World-Anwendung höchst willkommen sein :)
Genau mein Punkt zu erarbeiten, lassen
die Methode main() eine leere unendlich sein while-Schleife spezifische oder Standard-Bibliothek Anrufe, ohne OS, um sicherzustellen, werden verwendet. Das gewünschte o/p ist ein Hang. Mit den üblichen GCC Optionen würde der Bootloader die ausführbare Datei definitiv nicht laden und sagen, dass sie ungültig ist ELF Format. Wenn Sie jedoch die Option -dN an den Linker übergeben, wird es zu einem gültigen ELF. Mehr Compiler/Linker-Optionen sind erforderlich, damit es hängt und nicht abstürzt !! Was genau sind diese Compiler-Optionen?
file.c:
int main()
{
while(1);
}
Compilation
gcc -c -nostdinc -fno-builtin file.c
ld -dN -nostdlib file.o
Bootloader Lasten a.out auf RAM und führt.
Dank ... Die Links waren sehr nützlich :) – AIB