Was ist ffreestanding
in gcc? Was wird es verwendet ? Ich stieß auf folgendes:Was ist die Option ffreestanding in gcc?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
und verstehe nicht, was es genau bedeutet.
Was ist ffreestanding
in gcc? Was wird es verwendet ? Ich stieß auf folgendes:Was ist die Option ffreestanding in gcc?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
und verstehe nicht, was es genau bedeutet.
Eine freestanding
Umgebung ist eine, in der die Standardbibliothek möglicherweise nicht vorhanden ist, und der Programmstart muss nicht unbedingt auf "main" sein. Die Option -ffreestanding
lenkt den Compiler auf nicht angenommen, dass Standardfunktionen ihre übliche Definition haben.
Standardmäßig wird GCC als Compiler für eine gehostete Implementierung fungieren und __STDC_HOSTED__
als 1 definieren und davon ausgehen, dass bei Verwendung der Namen von ISO C-Funktionen die Semantik im Standard definiert ist. Verwenden Sie die Option -ffreestanding
, um es als eine konforme freistehende Implementierung für eine freistehende Umgebung zu fungieren. Es wird dann __STDC_HOSTED__
zu 0 definieren und keine Annahmen über die Bedeutung von Funktionsnamen aus der Standardbibliothek treffen.
Für mehr Info, This Link kann helfen.
bitte erarbeiten – saplingPro
@saplingPro Bitte schauen Sie auf editierte Antwort. –
@Dayalrai Ich benutzte '-freestanding'-Option mit' Arm-nicht-eabi-gcc': 'Arm-nicht-eabi-gcc -g-O0 -freeest ......', aber ich bekomme immer noch Hauptsymbol von Aufruf von 'nm' Befehl' Umain', der einen Debugging Fehler mit 'gdb' erzeugt:' Funktion'main "nicht definiert". Wie kann ich vermeiden, dieses "Haupt" -Symbol zu erzeugen? –
In Verbindung stehende: http://stackoverflow.com/questions/2681304/compile-for-freestanding-environment-with-gcc –