我在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