gpt4 book ai didi

python - 任意 C 项目的预处理

转载 作者:行者123 更新时间:2023-11-30 20:22:07 25 4
gpt4 key购买 nike

我想用 python 编写一个好的调用图程序,因此我使用 pycparser。Pycparser需要预处理c文件才能正确创建抽象语法树。我的第一个方法是仅使用 -E gcc 对文件的选项,然后将其传递给 pycparser。但对于不同的项目,我收到“No such file or directory ”错误,因为 gcc 找不到特定的 header 。如果我尝试使用 gcc -E `find | grep "\.c"\` 预处理 Linux 内核它丢失了一些头文件,例如带有 Linux/前缀的头文件,因为没有这样的文件夹。在我看来,我需要一些额外的标志来让 gcc 传递头文件的位置并正确进行预处理。有没有通用的方法来预处理任意 C 项目?

此外,我想如果我正确地进行预处理,不同文件中会有同一函数的多个副本。有没有办法确定函数的原始文件?

最佳答案

您需要了解 GCC 如何查找头文件,至少包括编译器命令行开关和搜索路径的环境变量。

我怀疑各种项目集配置变量的构建脚本会影响 GCC 如何查找任何特定编译的头文件。许多这样的脚本甚至在命令行上进行宏替换,这意味着您必须知道脚本在做什么。

如果将 C 源文件与设置其构建上下文的 make 脚本隔离,GCC 将找不到正确的 header 。这就是你的问题。

您可能需要运行构建脚本,并拦截对 GCC 的调用以捕获必要的上下文。

关于python - 任意 C 项目的预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com