Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 预处理Linux源代码并保存到另一个目录_C_Linux_Gcc_Kernel_C Preprocessor - Fatal编程技术网

C 预处理Linux源代码并保存到另一个目录

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(不扩展它们)将阻止

假设我在/tmp/Linux src中有完整的Linux源代码。在menuconfig之后,我想做“某种类型的gcc-E”,其中除#include之外的所有预处理器宏都被展开,因此实际配置的预处理源代码(用于编译)将保存在/tmp/linux src中进行编译,而不是保存在单个文件中,而是保留整个树结构,而不包含不需要的文件。这种诡计可能吗?在准备交叉编译时也可以吗


谢谢

简短回答:不。一般情况下不能这样做

长答覆: 大多数预处理都是通过“包含文件”进行的。保留#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我建议你去问它,它最适合这个问题主题。你能澄清一下这个问题的动机/目标吗?有可能想出一个局部解决方案的变通办法