gpt4 book ai didi

clang - Stmt::viewAST 仅在具有 Graphviz 或 gv 的系统上的调试版本中可用

转载 作者:行者123 更新时间:2023-12-04 05:43:42 26 4
gpt4 key购买 nike

我一直在尝试使用以下方法使用 graphviz 使 clang 2.9 输出 AST:

./clang -cc1 -ast-view smd.c 

但是它在控制台上输出代码并提示:

Stmt::viewAST is only available in debug builds on systems with Graphviz or gv!



在 llvm documentation提到 /Applications/Graphviz.app/Contents/MacOS/应该添加到路径中。我这样做是使用 export PATH=$PATH:/Applications/Graphviz.app/Contents/MacOS/但仍然不起作用。

在同一文档中还提到:

Getting this to work requires a small amount of configuration. On Unix systems with X11, install the graphviz toolkit, and make sure 'dot' and 'gv' are in your path. If you are running on Mac OS/X, download and install the Mac OS/X Graphviz program, and add /Applications/Graphviz.app/Contents/MacOS/ (or wherever you install it) to your path. Once in your system and path are set up, rerun the LLVM configure script and rebuild LLVM to enable this functionality.



我对这个配置和重建 LLVM 一无所知(我所做的只是下载 llvm+clang 2.9 包并直接从文件夹中运行命令。

关于我的 graphviz 版本:
$ dot -v
dot - graphviz version 2.28.0 (20111028.1807)

然而 gv命令不可用,我似乎无法在谷歌上找到它应该位于或获取的位置。

这有什么线索吗?问题本身是 如何将 clang 2.9 输出到 graphviz .我只是相信这与在我的机器上找不到的这个 gv 有关,但我可能会被误导。

谢谢你。

最佳答案

由于我必须通过一些奇怪的细节才能使其正常工作,并且从我所看到的它不是 Mac OS Lion 用户的直接方法,这是我发现的情况,以防有人像我一样因为看似简单的事情而陷入困境一线任务。

  • 首先,在做任何事情之前,您可能想检查一下您是否有 graphviz 和 gv,正如我在我最初的问题中提到的,如果您遇到和我一样的情况,您会 clang 提示 graphviz 或 gv。虽然 graphviz只是使用谷歌比较容易找到,gv 对我来说似乎不是因为它在他们的官方网站上缺少它的名字,即 GNU gv .
  • 您应该毫不费力地安装 graphviz,但 gv 可能不会。它提示一个名为 Xaw3d 的依赖项.他们的 website包含一个不太最新的版本(2003),但这就是会做的。如果你和我一样不幸,你会发现下载被破坏了。幸运的是,一位 friend 向我指出了这个 website from MIT不得不处理这个问题的人为我节省了很多时间。这是最近的(2012 年 5 月),我正在回答这个问题,所以它也应该对你有用。我在这里发布了我实际使用的内容,以防页面出现故障:
  • 获取 ziptar gv 的版本.
  • 避免使用 pkg-config utility通过运行:

  • $ ./configure X11_CFLAGS='-I/usr/X11/include/X11' X11_LIBS='-L/usr/X11/lib -lX11 -lXext -lXmu -lXt'



    而在 ibXaw3d-1.6 里面控制台上的目录。

    其次是:

    make

    sudo make install

    make clean



    完成后返回并安装 gv,如果它不起作用,请更改他们的代码,这些代码也被我窃听了(在一行中缺少几个参数,因此无法完成安装),正如 MIT 页面所提到的:

    更改于 Scrollbar.c :

    (*swclass->threeD_class.shadowdraw) (w, event, region, FALSE);





    (*swclass->threeD_class.shadowdraw) (w, event, region, sbw->threeD.relief, FALSE);



    在 MAC 上,如果以下未运行,它也会提示僵尸进程,以防万一,因为作者还建议以这种方式完成配置:

    ./configure --x-includes=/usr/X11/include/X11 --x-libraries=/usr/X11/lib --enable-SIGCHLD-fallback



    最后,如果您运行 $gb whatever.ps,gv 应该可用.如果您想知道,这是它的用途之一,如果不是全部,请打开 .ps (我没有费心查看它,因为它不是最初的目的)。

    现在,如果你仍然像我一样倒霉,运行同样的东西是行不通的。

    感谢 Joey(下面评论中的人)和 LLVM mailing list我发现我应该在 Debug模式下运行构建。

    现在看来,如果您像我最初为 MAC OS 所做的那样下载二进制文件,它会自动打开 出于优化原因的 Debug模式(快 10 倍左右,我在控制台上的输出之一)。

    如果你去 this page并按照 1. 到 5. 按照该页面上的说明,您将获得处于 Debug模式的最新版本。

    确保打开 LLVM/Debug+Accerts/bin/clang并从那个 clang 中执行。结果应该在带有树的 gv 上打开一个 GUI。

    正如您可能注意到的那样,我不得不继续使用最新版本。根据 llvm getting started,有一种方法可以在llvm compile 上的 Debug模式下进行编译.基本上这一段说明了一切:

    These builds are enabled with the --enable-optimized option to configure or by specifying ENABLE_OPTIMIZED=1 on the gmake command line. For these builds, the build system will compile the tools and libraries with GCC optimizations enabled and strip debugging information from the libraries and executables it generates. Note that Release Builds are default when using an LLVM distribution.



    尽管我收到了一些似乎证实我在 Debug模式下成功编译了 2.9 的消息,例如:

    llvm[0]: * Completed Debug Build

    llvm[0]: * Note: Debug build can be 10 times slower than an

    llvm[0]: * optimized build. Use make ENABLE_OPTIMIZED=1 to

    llvm[0]: * make an optimized build. Alternatively you can

    llvm[0]: * configure with --enable-optimized.



    做同样的事情(在这种情况下,文件夹仅被称为 Debug 而不是 Debug+Asserts ),但是对于 2.9 进行相同的过程不起作用。 如果有人知道为什么请告诉我,因为我仍然对 2.9 感兴趣 但总而言之,终于在视觉上看到了这个作品。 我仍然不知道为什么它只在 gv 上输出而不在 graphviz 上输出 以及。

    关于clang - Stmt::viewAST 仅在具有 Graphviz 或 gv 的系统上的调试版本中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10962845/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com