Was ist ffreestanding
im gc? Was wird es verwendet ? Ich bin auf folgendes gestoßen:
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
und verstehe nicht, was das genau bedeutet.
BäumchenPro
Was ist ffreestanding
im gc? Was wird es verwendet ? Ich bin auf folgendes gestoßen:
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
und verstehe nicht, was das genau bedeutet.
Tagesrai
EIN freestanding
Umgebung ist eine Umgebung, in der die Standardbibliothek möglicherweise nicht vorhanden ist und der Programmstart nicht unbedingt auf “main” erfolgen muss. Die Option -ffreestanding
leitet den Compiler an nicht davon ausgehen, dass Standardfunktionen ihre übliche Definition haben.
Standardmäßig fungiert GCC als Compiler für eine gehostete Implementierung und definiert __STDC_HOSTED__
als 1 und unter der Annahme, dass bei Verwendung der Namen von ISO-C-Funktionen diese die im Standard definierte Semantik haben. Verwenden Sie die Option, damit es als konforme freistehende Implementierung für eine freistehende Umgebung fungiert -ffreestanding
. Es wird dann definiert __STDC_HOSTED__
auf 0 setzen und keine Annahmen über die Bedeutung von Funktionsnamen aus der Standardbibliothek treffen.
Für mehr Information, Dies Link kann helfen.
@Dayalrai habe ich verwendet -ffreestanding
Möglichkeit mit arm-non-eabi-gcc
: arm-non-eabi-gcc -g -O0 -ffreestanding ......
aber ich bekomme immer noch das Hauptsymbol, wenn ich anrufe nm
Befehl U main
die mir Debugging-Fehler mit erzeugen gdb
: Function "main" not defined
. Wie kann ich vermeiden, dies zu erzeugen main
Symbol
– Benutzer2948075
28. April 2015 um 9:01 Uhr
Typischerweise -ffreestanding
wird zum Kompilieren von Kerneln verwendet. Außerdem wird es selten verwendet, um Anwendungen zu kompilieren, die direkt mit dem Kernel interagieren würden, ohne eine Bibliothek zu verwenden. Normale Anwendungen würden nicht verwendet werden -ffreestanding
.
– Christian Hüjer
6. Oktober 2015 um 10:56 Uhr
Ich führe den Dhrystone-Benchmark auf Cortex-M7 und die Einbeziehung von -ffreestanding
als Compiler-Option verursacht einen Rückgang der DMIPS/MHz-Zahl. In solchen Fällen ist es daher besser, darauf zu verzichten.
– Nö
25. März um 6:29 Uhr
Siehe auch: stackoverflow.com/questions/2681304/…
– Ciro Santilli OurBigBook.com
29. April 2015 um 13:21 Uhr