我在Apache源代码上运行concolic分析工具波峰(http://code.google.com/p/crest/)。该应用程序的用法是:在bash脚本中自动引用.h文件
../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语句。
[[email protected] 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/
你应该可能会从配置脚本和makefile中获取包含路径。 – 2013-03-23 14:08:06
你可以使用gcc的选项'-E'(或'-EP',如果crest不喜欢#line指令)创建预处理源文件。 – Armali 2013-08-28 06:02:43