为什么我必须使用gnu99而不是c99来编译内核模块?

jsj*_*jsj 8 c c99 kernel-module linux-kernel gnu99

我习惯于-std=c99在编译应用程序代码时使用c99功能.

最近我一直在关注一些基本的内核模块示例,并添加ccflags-y := -std=c99到makefile中.然而,当我尝试制作时,这导致17K行错误.gnu99工作得很好.

内核代码依赖的gnu99和c99有什么区别?

san*_*ana 1

Linux内核使用了大量的GCC扩展,即内核中使用的C语言不符合标准,它是包含GCC扩展的超集。因此GNU99是需要传递的编译器选项。