2013-07-17 11 views
25

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.

+0

In Verbindung stehende: http://stackoverflow.com/questions/2681304/compile-for-freestanding-environment-with-gcc –

Antwort

38

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.

+0

bitte erarbeiten – saplingPro

+0

@saplingPro Bitte schauen Sie auf editierte Antwort. –

+0

@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? –

Verwandte Themen