Warum muss ich gnu99 anstelle von c99 verwenden, um ein Kernelmodul zu kompilieren?

8

Ich bin es gewohnt, -std=c99 zu verwenden, um c99-Features beim Kompilieren von Anwendungscode zu aktivieren.

Vor kurzem habe ich einige grundlegende Kernelmodulbeispiele verfolgt und ccflags-y := -std=c99 zum Makefile hinzugefügt. Dies führte jedoch zu 17K-Fehlerzeilen, wenn ich versuchte zu machen. gnu99 funktioniert perfekt.

Was ist der Unterschied zwischen gnu99 und c99, auf den sich der Kernel-Code stützt?

    
jsj 17.05.2014, 03:31
quelle

1 Antwort

1

Der Linux-Kernel verwendet viele GCC-Erweiterungen, d. h. die im Kernel verwendete C-Sprache ist nicht standardkonform, es ist eine Obermenge, die die GCC-Erweiterung enthält. Daher ist GNU99 die Compiler-Option, die übergeben werden muss.

    
sanatana 09.06.2014 02:27
quelle