C 预处理Linux源代码并保存到另一个目录
假设我在/tmp/Linux src中有完整的Linux源代码。在menuconfig之后,我想做“某种类型的gcc-E”,其中除#include之外的所有预处理器宏都被展开,因此实际配置的预处理源代码(用于编译)将保存在/tmp/linux src中进行编译,而不是保存在单个文件中,而是保留整个树结构,而不包含不需要的文件。这种诡计可能吗?在准备交叉编译时也可以吗C 预处理Linux源代码并保存到另一个目录,c,linux,gcc,kernel,c-preprocessor,C,Linux,Gcc,Kernel,C Preprocessor,假设我在/tmp/Linux src中有完整的Linux源代码。在menuconfig之后,我想做“某种类型的gcc-E”,其中除#include之外的所有预处理器宏都被展开,因此实际配置的预处理源代码(用于编译)将保存在/tmp/linux src中进行编译,而不是保存在单个文件中,而是保留整个树结构,而不包含不需要的文件。这种诡计可能吗?在准备交叉编译时也可以吗 谢谢简短回答:不。一般情况下不能这样做 长答覆: 大多数预处理都是通过“包含文件”进行的。保留#include(不扩展它们)将阻止
谢谢简短回答:不。一般情况下不能这样做 长答覆: 大多数预处理都是通过“包含文件”进行的。保留#include(不扩展它们)将阻止大多数#define、#ifdef、。。。从工作 考虑一下
SEEK\u END
file.c
#include <stdlib.h>
#include <stdio.h>
...
fseek(fp, 0, SEEK_END) ;
file.c
#包括
#包括
...
fseek(fp,0,SEEK_END);
将SEEK#u END翻译为'2'需要阅读、分析和扩展
stdio.h
,然后是许多#if
,等等。此外,它还需要扩展以前包含的任何文件,这些文件可能定义会影响stdio.h
-stdlib.h的符号。在这种情况下,“除之外”包括什么你是说这里?宏是如何定义的?有几种方法。IMO:最简单的方法是写一个makefile
the Do all work for you我建议你去问它,它最适合这个问题主题。你能澄清一下这个问题的动机/目标吗?有可能想出一个局部解决方案的变通办法