我在 Apache 源代码上运行 concolic 分析工具 crest ( http://code.google.com/p/crest/ )。该应用程序的用法是:
../crestSVN/bin/crestc server/request.c
因此,对于每个存在的 .c 文件,都需要运行此命令。为了加快速度,我继续编写了一个小的 bash 脚本来循环遍历目录中的所有 .c 文件并在其上运行此命令。问题是许多 .c 文件都有它们引用的头文件。如果在目录中找不到头文件,则 crest 命令在尝试分析 .c 文件时会崩溃。
为了解决这个问题,我为包含 .h 文件的各种文件夹编写了一个小语句“export C_INCLUDE PATH=”.....。这工作正常,Crest 能够很好地处理大多数文件。但是,有一些问题。我确定我忘记在我创建的“C_INCLUDE_PATH”语句中包含一些 .h 文件的目录。此外,我相信当不同的“include.h”文件位于不同的目录中时会出现问题。使用上述过程,可能会引用错误的“include.h”文件,从而导致当 crest 尝试在 .c 文件上运行时出现问题。
我的问题是:
- 有没有办法找到正确的 .h 文件并将其链接到我试图以更自动化的方式引用的 .c 文件?
- 你有什么一般性的建议?
这是我使用的 C_INCLUDE_PATH 语句。
[root@localhost dan]# export C_INCLUDE_PATH=/home/dan/Downloads/httpd-2.2.14/modules/http:/home/dan/Downloads/httpd-2.2.14/include:/home/dan/Downloads/httpd-2.2.14/srclib/apr/include:/home/dan/Downloads/httpd-2.2.14/srclib/apr-util/include:/home/dan/Downloads/httpd-2.2.14/os/unix/:/home/dan/Downloads/httpd-2.2.14/server/mpm/worker/:/home/dan/Downloads/httpd-2.2.14/mpm/netware/:/home/dan/Downloads/httpd-2.2.14/srclib/pcre/:/home/dan/Downloads/httpd-2.2.14/srclib/apr/include/arch/netware/