2012-07-24 3 views
1

매우 간단한 패스 작성을 위해 http://llvm.org/docs/WritingAnLLVMPass.html을 사용하고 있습니다. ('hello'대신에 'hello'대신에 'Joe'를 사용한다고 가정하십시오.)LLVM 패스 작성 실패 -

내가 원하는 곳에서 'joe'디렉토리를 생성하고 제안 된 cpp 파일을 다음 디렉토리에 생성합니다. 'joe'(근처의 디렉토리에있는 파일 중 하나에도 cpp 파일이 없다는 것을 알지만) 나는 'joe.cpp'라고 이름을지었습니다. 나는 다르게 이야기했다고 믿지 않기 때문에 ...

도달했습니다. 그것이 말하는 문서의 일부가 '로컬 디렉토리에 간단한 "gmake를"명령을 사용하여 파일을 컴파일하지'그러나 나는 오류를

메이크업을 얻을 : *** 아니 규칙을 대상에게 를 만들기 위해Makefile '. 중지.

이는 완전히 혼란 스럽습니다. 나는 this case과 비슷하지만 그 경우에는 ../config를 실행하고 루트 디렉토리에서 make를하면 문제가 해결됩니다. 내 일은 20 분이 걸렸고 아무 것도 바뀌지 않았습니다 ... 어떤 일이 일어 났는지 내게 말해 줄 수 있습니까? 아니면 성공이 어떻게 생겼는지 흔적을 남길 수 있습니까? -

편집 로컬 메이크 파일은 다음과 같습니다

# 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 
+0

당신은'Makefile : ...과 같은 명령을 가지고 있습니까? '를 사용하십시오. 그것이 오류 메시지가 말하는 것입니다. –

+0

makefile 전체를 제공하도록 편집 됨 : – Joe

답변

2

그래서이 도움말 파일이 말할 때 'lib 디렉토리가/변환은/안녕하세요'뜻 밝혀 'somestuff/LLVM/lib 디렉토리/변환/안녕하세요' '하지/somestuff/build/lib/Transforms/Hello '가 있습니다. 뒤늦은 지견에서 이것은 불투명하지는 않지만 의사에게 이것을 놓친 다른 사람들을 돕기 위해이 답을 남기고 싶습니다 ...

+2

나중에 참조 할 수 있도록 별도의 빌드 디렉토리를 사용할 수 있지만 /lib/Transform 디렉토리로 이동하여 패스의 하위 디렉토리를 만들고 Makefile을 복사해야합니다. 거기에. 그런 다음 동일한 디렉토리 내에서'make '를 실행하면 소스 트리의 정상 위치에서 소스를 가져옵니다. 또한,'Makefile'에있는 패스의'LIBRARYNAME'은 "LLVMFooPass"와 같이 "LLVM"으로 시작해야합니다; 그렇지 않으면 링커는 그것을 무시하고'.so' 파일을 얻지 못할 것입니다. –

+0

@ 브라이 언 확실합니까? 라이브러리 이름은 'LLVM'으로 시작해야한다는 말은 어디에도 없습니다. – zell

5

나는 똑같은 문제에 직면했고 이것을 다시 해결했습니다. 튜토리얼 읽기 :

먼저 LLVM을 구성하고 빌드하십시오. 이 작업은 별도의 객체 디렉토리가 아닌 LLVM 소스 트리에서 직접 수행해야합니다.

즉, LLVM 시작하기에서 권장 한대로 "빌드"폴더를 만들면 안됩니다.

  • 은에서와 같이 패스, MyHello 말한다하자, $ LLVM에서/lib 디렉토리/변환 /과 필요한 파일을 새 폴더를 만들 : 여기에 내가 작동 만든 목록입니다, 당신은 $LLVM에 LLVM 소스를 다운로드 가정 튜토리얼.

  • $에서 cd ​​$의 LLVM은

  • $./$이

  • $ CD를 lib 디렉토리/변환/MyHello

  • $ 만들 수 있도록

  • 구성