1

私はhttp://llvm.org/docs/WritingAnLLVMPass.htmlで作業しており、非常に単純なパスを作成しようとしています。(関連するディレクトリに既に「hello」があるため、「hello」ではなく「Joe」を使用していると仮定します)

必要な場所に「joe」ディレクトリを作成し、提案されたcppファイルを「joe」に作成します(ただし、近くのディレクトリにはcppファイルが含まれていないことに注意してください)。「joe.cpp」という名前を付けます私が違うと言われたことを信じないでください...

「ローカル ディレクトリで単純な "gmake" コマンドを使用してファイルをコンパイルする」というドキュメントの部分に到達しますが、エラーが発生します。

make: *** 対象 /Users/joXXXXX/llvm/llvm/lib/Transforms/joe/Makefile', needed byの Makefile を作成するルールはありません。止まる。

これは非常に紛らわしいです。このケースとの類似性に注意しますが、その場合は ../config を実行してから、ルート ディレクトリで make を実行すると問題が解決します。私のタスクでは、これに 20 分かかりましたが、何も変わっていません。

編集 - ローカル Makefile は次のようになります。

# Makefile for hello pass
#
# # Path to top level of LLVM hierarchy
LEVEL = ../../..
#
# # Name of the library to build
LIBRARYNAME = joe
#
# # Make the shared library become a loadable module so the tools can 
# # dlopen/dlsym on the resulting library.
# LOADABLE_MODULE = 1
BUILD_ARCHIVE = 1
# # Include the makefile implementation stuff
include $(LEVEL)/Makefile.common
4

2 に答える 2

5

私は同じ問題に直面し、チュートリアルを読み直すことでこれを解決しました:

まず、LLVM を構成してビルドします。これは、別のオブジェクト ディレクトリではなく、LLVM ソース ツリー内で直接行う必要があります。

これは、LLVM 入門で推奨されている「ビルド」フォルダーを作成しないことを意味します。でllvmソースをダウンロードしたと仮定します。$LLVMこれが機能するようにしたリストは次のとおりです。

  • $LLVM/lib/Transforms/ に MyHello という新しいフォルダーを作成し、チュートリアルのようにパスに必要なファイルを作成します。

  • $cd $LLVM

  • $./configure

  • $make

  • $cd lib/Transforms/MyHello

  • $make

于 2013-03-10T01:25:27.323 に答える
2

したがって、ヘルプファイルに「lib / Transforms / Hello」と表示されている場合は、「/ somestuff / build / lib / Transforms/Hello」ではなく「somestuff/llvm / lib / Transforms/Hello」を意味します。後から考えると、これは可能な限り不透明ではありませんが、ドキュメントでこれを見逃した可能性のある他の人々を助けるために、この回答を残したいと思います...

于 2012-07-30T18:09:56.770 に答える