【发布时间】:2012-06-13 08:08:37
【问题描述】:
我一直在尝试使用以下方法使 clang 2.9 输出带有 graphviz 的 AST:
./clang -cc1 -ast-view smd.c
但是它在控制台上输出代码并抱怨:
Stmt::viewAST 仅在带有 Graphviz 或 gv 的系统上的调试版本中可用!
在 llvm documentation 中提到应该将 /Applications/Graphviz.app/Contents/MacOS/ 添加到路径中。我使用export PATH=$PATH:/Applications/Graphviz.app/Contents/MacOS/ 这样做了,但仍然无法正常工作。
在同一文档中还提到:
要让它工作需要少量的配置。在带有 X11 的 Unix 系统上,安装 graphviz 工具包,并确保 'dot' 和 'gv' 在你的路径中。如果您在 Mac OS/X 上运行,请下载并安装 Mac OS/X Graphviz 程序,并将 /Applications/Graphviz.app/Contents/MacOS/(或安装它的任何位置)添加到您的路径。设置好系统和路径后,重新运行 LLVM 配置脚本并重建 LLVM 以启用此功能。
我不知道这个配置在哪里并重建 LLVM(我所做的只是下载 llvm+clang 2.9 包并直接从文件夹中运行命令。
关于我的graphviz版本:
$ dot -v
dot - graphviz version 2.28.0 (20111028.1807)
但是gv 命令不可用,我似乎无法在谷歌上找到它应该位于或获取的位置。
这有什么线索吗?问题本身是如何将 clang 2.9 输出到 graphviz。我只是相信这与我的机器上找不到的这个 gv 有关,但我可能会被误导。
谢谢。
【问题讨论】:
-
您似乎下载了 Clang 的二进制文件,这很可能是发布版本。您需要下载源代码并构建调试 clang。
-
谢谢乔伊!我想这就是我从他们的邮件列表中收到的回复。你介意用更多的指针来回答它,这样我就可以接受这个作为关于如何在调试模式下编译它的答案吗?另外,这个功能只在调试模式下有效,有什么特别的原因吗?
标签: clang graphviz abstract-syntax-tree