私はPythonで良いcallgraphプログラムを書いています。そのためにpycparserを使用します。 Pycparserは、抽象構文木を正しく作成するために、cファイルを前処理する必要があります。 私の最初のアプローチは、ファイルに対してgccの-E
オプションだけを使用し、それをpycparserに渡すことでした。 しかし、異なるプロジェクトでは、 "No such file or directory
"というエラーが発生します。これは、gccが特定のヘッダーを見つけられないためです。もし私がgcc -E `find | grep "\.c"\`
でLinuxカーネルを前処理しようとすると、そのようなフォルダがないので、Linux /プレフィックスを持つもののようないくつかのヘッダーファイルが失われます。ヘッダファイルの場所を渡して正しく前処理するために、gccにいくつかのフラグを追加する必要があるようです。任意のCプロジェクトを前処理する一般的な方法はありますか?任意のCプロジェクトの前処理
また、私はそれが正しく前処理するようになるかと思いますが、同じファンクションの複数のコピーが別々のファイルにあります。関数の元のファイルを特定する方法はありますか?
すべてのソースコードのヘッダーを見つける正しい方法はありません。別のプログラムでは、プリプロセッサのコマンドラインで '-I/path/to/headers'オプションを使って異なるディレクトリセットを指定する必要があります。ありがとうございます。 –