gcc的-E选项可以为你生成预编译后的文件。预编译后的文件将把c文件中的宏以及该文件包含的所有头文件展开。这样就没有了一层一层进入嵌套包含的头文件。下面是一个使用gcc的-E选项的例子。
下面是来自gcc mannual page的解释:
-E Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of preprocessed source code, which is sent to the standard output. Input files which don't require preprocessing are ignored.
$ gcc -E drivers/char/mydrv.c -D__KERNEL__ -Iinclude -Iinclude/asm-x86/mach-default > mydrv.i
其中的-I选项告诉编译器在哪些目录中搜索所需要的头文件。
还可以用gcc的-S选项生成汇编码的文件。如:
$ gcc -S drivers/char/mydrv.c -D__KERNEL__ -Iinclude -Ianother/include/path