2012-06-09 41 views
2

我一直在嘗試使用,使鐺2.9輸出AST與graphviz的系統如下:語句:: viewAST只能在調試版本上的Graphviz或GV

./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命令不可用,我似乎無法找到對谷歌它在哪兒假定位於或獲得。

任何線索Ø這個?這個問題本身是如何輸出鏗鏘2.9到graphviz。我只相信它與我的機器上找不到的gv有關,但我可能會誤導。

謝謝。

+0

這似乎是你下載了Clang的二進制文件,這很可能是一個Release版本。您需要下載源代碼並構建調試叮噹聲。 – joey

+0

謝謝你喬伊!我想這就是它,我也將它作爲郵件列表的回覆。你會介意用更多的指針來回答它嗎,所以我可以接受這個作爲如何在調試模式下編譯它的答案?另外,爲什麼這個功能只能在調試模式下工作,有什麼特別的原因嗎? –

回答

3

因爲我不得不通過一些奇怪的細節來獲得這個工作,並且從我看到它不是一個Mac OS Lion用戶的直接方法,這裏是我發現的情況,以防萬一有人像我那樣陷入困境看起來很簡單的一行任務。

  1. 首先,任何事情之前,你可能要檢查,如果你有graphviz的和GV,提到在我原來的問題,你會的,如果你倒下,因爲我做了同樣的情況下,你已經鏘抱怨graphviz或gv。雖然graphviz只是使用谷歌相對容易找到,gv在我看來並不是,因爲它的官方網站上缺少它的名字,那就是GNU gv

  2. 您應該安裝graphviz而不用太多頭痛,但gv可能不會。它抱怨稱爲Xaw3d的依賴項。他們的website包含一個不是最新的版本(2003),但那會做什麼。如果你和我一樣不幸,你會發現下載失敗。幸運的是,一位朋友指着我這個不得不處理這件事的人的這個website from MIT爲我節省了很多時間。這是非常近的(2012年5月),我正在回答這個問題,所以它也適用於你。我在這裏發佈我實際使用的東西,以防萬一頁面出現故障:

  3. 獲取ziptar版本的gv

  4. 通過運行避免pkg-config utility

$的./configure X11_CFLAGS = ' - 我的/ usr/X11 /包括/ X11' X11_LIBS =「 - L/USR/X11/lib目錄 - lX11 -lXext -lXmu -lXt'

while your ibXaw3d-1.6 your console on your console。

其次:

使

須藤使安裝

使清潔

做完這些後回去安裝GV,如果它不工作改變自己的代碼,對於我來說也是很麻煩的(麻省理工學院網頁上提到的一行上沒有幾個參數,這使得安裝無法完成):

變化Scrollbar.c

(* swclass-> threeD_class.shadowdraw)(瓦特,事件,區域,FALSE);

(* swclass-> threeD_class.shadowdraw)(瓦特,事件,區域,sbw-> threeD.relief,FALSE);

在Mac上也會抱怨殭屍進程如果下面沒有這樣以防萬一運行作爲筆者還建議把工作這樣的配置:

的./configure --x-包括=在/ usr/X11 /包括/ X11 --X-庫=在/ usr/X11/lib目錄--enable-SIGCHLD-後備

最後,如果你運行$gb whatever.ps GV應該是可用的。如果你想知道,那是它的用途之一,如果不是全部的話,打開.ps(我沒有打擾它看起來很多,因爲它不是最初的目的)。


現在,如果你仍然不走運,那麼運行同樣的事情將無法正常工作。

感謝Joey(下面的評論者)和LLVM mailing list人,我發現我應該在調試模式下運行構建。

現在看來,如果你下載的是二進制文件像我原來的MAC OS會自動亮起調試模式優化的原因(快10倍左右,我在控制檯上的輸出之一了)。

如果您轉到this page並按照1到5.您將按照該頁面上的說明獲得最新版本的調試模式。

確保您打開LLVM/Debug+Accerts/bin/clang並從該鐺聲中執行。結果應該在樹上用gv打開一個GUI。


正如你可能會注意到我不得不移動到最新版本。根據llvm getting started,在llvm編譯時有一種編譯調試模式的方法。基本上這段描述了這一切:

這些版本通過--enable-optimized選項啓用,或者通過在gmake命令行上指定ENABLE_OPTIMIZED = 1來啓用。對於這些構建,構建系統將編譯啓用GCC優化的工具和庫,並從庫和它生成的可執行文件中去除調試信息。請注意,使用LLVM分配時,發佈版本是默認版本。

雖然我得到的似乎證實了我成功編譯2.9在調試模式,如一些消息:

LLVM [0]:*完成調試版本

LLVM [0] :*注:調試生成可以比

LLVM [0]慢10倍:*優化d構建。使用make ENABLE_OPTIMIZED = 1到

llvm [0]:*進行優化構建。或者,您可以

llvm [0]:*使用--enable-optimized進行配置。

做同樣的事情(在這種情況下,該文件夾只叫Debug代替Debug+Asserts),但並沒有爲2.9回事將以相同的方式。 如果有人知道爲什麼請讓我知道,因爲我仍然對2.9感興趣,但總而言之,終於看到它在視覺上這個工程。 我仍然不知道爲什麼它只輸出gv,但也不是graphviz