2

次を使用して、clang 2.9がgraphvizでASTを出力するようにしようとしています:

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

ただし、コンソールにコードを出力し、次のように不平を言います。

Stmt::viewAST は、Graphviz または gv! を使用するシステムのデバッグ ビルドでのみ使用できます。

llvmのドキュメント/Applications/Graphviz.app/Contents/MacOS/には、パスに追加する必要があることが記載されています。私はそうしexport PATH=$PATH:/Applications/Graphviz.app/Contents/MacOS/ましたが、それでも機能しません。

また、同じドキュメントには、次のことが記載されています。

これを機能させるには、少量の構成が必要です。X11 を使用する Unix システムでは、graphviz ツールキットをインストールし、「ドット」と「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コマンドは利用できず、どこにあるのか、どこにあるのか、Googleで見つけることができないようです。

これについての手がかりはありますか?問題自体は、clang 2.9 を graphviz に出力する方法です。私のマシンでは見つからないこのgvに関係していると信じていますが、誤解を招く可能性があります。

ありがとうございました。

4

2 に答える 2

3

これを機能させるにはいくつかの奇妙な詳細を調べなければならなかったので、Mac OS Lionユーザーにとって直接的なアプローチではないことがわかったので、誰かが私と同じように行き詰まった場合に備えて見つけたのは、単純に見えるものです1行のタスク。

  1. 最初に何よりもまず、私の最初の質問で述べたように、graphviz と gv があるかどうかを確認することをお勧めします。graphvizは googleを使用するだけで比較的簡単に見つけることができますが、 gv は、公式 Web サイト ( GNU gv ) で最初の名前が欠落していたため、私には思えませんでした。

  2. 頭を悩ませることなくgraphvizをインストールできるはずですが、gvはそうではないかもしれません。という依存関係について不平を言っていXaw3dます。彼らのウェブサイトには最新ではないバージョン (2003 年) が含まれていますが、それで十分です。あなたが私のように不幸な人なら、ダウンロードが壊れていることに気付くでしょう。幸運なことに、この問題に対処しなければならなかったMITのこの Web サイトを友人が教えてくれたので、多くの時間を節約できました。私がこれに答えている時点ではごく最近(2012年5月)なので、あなたにも役立つはずです。そのページがダウンした場合に備えて、実際に使用したものをここに投稿します。

  3. zipまたはtarバージョンを入手しgvます。

  4. pkg-config utility次を実行して回避します。

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

ibXaw3d-1.6コンソールのディレクトリ内で。

に続く:

作る

sudo make install

きれいにする

それが完了したら、戻ってgvをインストールします。うまくいかない場合は、MITページで言及されているように、バグが発生したコードを変更します(行にいくつかのパラメーターが不足しているため、インストールを完了できません)。

変更Scrollbar.c:

(*swclass->threeD_class.shadowdraw) (w, イベント, リージョン, FALSE);

(*swclass->threeD_class.shadowdraw) (w, イベント, リージョン, sbw->threeD.relief, FALSE);

MACでは、以下が実行されていない場合、ゾンビプロセスについても文句を言います。念のため、著者もこの方法で構成を行うことを提案しています。

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

最後に、実行すると gv が使用できるようになります$gb whatever.ps。疑問に思っている場合は、それがその用途の 1 つです。すべてではないにしても、.ps を開きます (本来の目的ではなかったので、あまり調べませんでした)。


あなたがまだ私のように運が悪い場合、同じことを実行してもうまくいきません。

Joey (下のコメントの人物) とLLVM メーリング リストの人々のおかげで、デバッグ モードでビルドを実行する必要があることがわかりました。

MAC OS で最初に行ったようにバイナリをダウンロードすると、最適化の理由で自動的にデバッグ モードになるようです (10 倍速く、コンソールの出力の 1 つを取得しました)。

このページに移動して1. から 5. を実行すると、そのページの指示に従って、既にデバッグ モードになっている最新バージョンが取得されます。

LLVM/Debug+Accerts/bin/clangそのclangを開いて実行してください。結果は、ツリーで gv の GUI を開く必要があります。


お気づきかもしれませんが、最新バージョンに移行する必要がありました。llvm Getting Started に従って、 llvmコンパイルでデバッグ モードでコンパイルする方法があります。基本的に、この段落はそれをすべて言います:

これらのビルドは、設定する --enable-optimized オプションを使用するか、gmake コマンド ラインで ENABLE_OPTIMIZED=1 を指定することで有効になります。これらのビルドの場合、ビルド システムは GCC 最適化を有効にしてツールとライブラリをコンパイルし、生成したライブラリと実行可能ファイルからデバッグ情報を削除します。LLVM ディストリビューションを使用する場合、リリース ビルドがデフォルトであることに注意してください。

デバッグ モードで 2.9 を正常にコンパイルしたことを確認するメッセージがいくつか表示されましたが、次のようなメッセージが表示されました。

llvm[0]: *デバッグ ビルドが完了しました

llvm[0]: *注: デバッグ ビルドは、

llvm[0]: *最適化されたビルド。make ENABLE_OPTIMIZED=1 を使用して

llvm[0]: *最適化されたビルドを作成します。または、次のことができます

llvm[0]: * --enable-optimized で設定します。

同じことを行っています (この場合、フォルダーは のDebug代わりに呼び出されただけですDebug+Asserts) が、同じプロセスを実行している 2.9 では機能しませんでした。私はまだ 2.9 に興味があるので、理由を知っている人がいたら教えてくださいなぜそれがgvでのみ出力され、graphvizでも出力されないのか、まだわかりません

于 2012-06-10T00:34:03.917 に答える