Clang/LLVM의 일부로 LLDB를 작성하려고합니다. LLVM, Clang, Compiler-RT 및 Extras는 OK입니다. 그러나 LLVM은 다른 구성 요소로 빌드 할 때 문제점이 있습니다.정의되지 않은 기호 SystemRuntimeMacOSX :: Initialize 및 SystemRuntimeMacOSX :: Terminate
디렉터리 구조는 LLVM/Clang/LLDB 지침에 따라 설정됩니다. LLDB의 문서는 Building LLDB에 있습니다. llvm
디렉토리 옆에 놓여 build
디렉토리에서 실행 된 아래의 (모든 소스의 압축을 푼 된 곳 llvm
입니다) :
$ cd build
$ ../llvm/configure --enable-optimized --enable-cxx11 --enable-libcpp --prefix=/usr/local
...
$ make -j4
...
llvm[4]: Compiling ARM_DWARF_Registers.cpp for Release+Asserts build
llvm[4]: Compiling KQueue.cpp for Release+Asserts build
llvm[4]: Compiling PseudoTerminal.cpp for Release+Asserts build
llvm[4]: Compiling Range.cpp for Release+Asserts build
llvm[4]: Compiling SharingPtr.cpp for Release+Asserts build
llvm[4]: Compiling StringExtractor.cpp for Release+Asserts build
llvm[4]: Compiling StringExtractorGDBRemote.cpp for Release+Asserts build
llvm[4]: Compiling TimeSpecTimeout.cpp for Release+Asserts build
llvm[4]: Building Release+Asserts Archive Library liblldbUtility.a
llvm[3]: Linking Release+Asserts Shared Library liblldb.dylib
Undefined symbols for architecture x86_64:
"SystemRuntimeMacOSX::Initialize()", referenced from:
lldb_private::Initialize() in liblldbInitAndLog.a(lldb.o)
"SystemRuntimeMacOSX::Terminate()", referenced from:
lldb_private::Terminate() in liblldbInitAndLog.a(lldb.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [/Users/jwalton/Clang-3.4.2/build/Release+Asserts/lib/liblldb.dylib] Error 1
make[2]: *** [all] Error 1
make[1]: *** [all] Error 1
make: *** [all] Error 1
편집 : 매트의 instructions below, 나는 Undefined symbols SystemRuntimeMacOSX::Initialize and SystemRuntimeMacOSX::Terminate
을 피할 수 있었다 다음과 같습니다. 그러나 빌드가 여전히 함께 사망 :
llvm[4]: Compiling ARM_DWARF_Registers.cpp for Release+Asserts build
llvm[4]: Compiling KQueue.cpp for Release+Asserts build
llvm[4]: Compiling PseudoTerminal.cpp for Release+Asserts build
llvm[4]: Compiling Range.cpp for Release+Asserts build
llvm[4]: Compiling SharingPtr.cpp for Release+Asserts build
llvm[4]: Compiling StringExtractor.cpp for Release+Asserts build
llvm[4]: Compiling StringExtractorGDBRemote.cpp for Release+Asserts build
llvm[4]: Compiling TimeSpecTimeout.cpp for Release+Asserts build
llvm[4]: Building Release+Asserts Archive Library liblldbUtility.a
make[3]: *** No rule to make target `/Users/jwalton/Clang-3.4.2/build/Release+Asserts/lib/liblldbPluginSystemRuntimeMacOSX.a',
needed by `/Users/jwalton/Clang-3.4.2/build/Release+Asserts/lib/liblldb.dylib'. Stop.
이상한 점은, lldbPluginSystemRuntimeMacOSX
이 lldbPluginProcessMachCore
같은 다른 플러그인과 같은 처리됩니다. 동일한 지시문은 Cmake.txt
과 같은 위치에 나타납니다.
호스트 플랫폼은 완전히 패치 된 OS X 10.8.5, x64입니다. Xcode 버전은 5.1.1 (5B1008) (최신 버전)입니다.
누군가 lldb를 LLVM 및 Clang으로 컴파일하려면 어떤 마법 단계를 수행해야하는지 알고 있습니까?
100 BOUNTY EDIT : 조리법에 붙여 넣기가 쉘 스크립트에 Clang 3.4.2 recipe입니다. 레시피는 Missing-Makefile
을 사용하며 매트는이를 아래에 제공합니다. 레서피는 메이크 파일을 패치하므로 수동으로 수행 할 필요가 없습니다.
150 BOUNTY EDIT : Cos '답변이 마지막 단계였습니다. 이 질문은 매트의 대답과 코의 대답을 필요로합니다. Cos가 업데이트 된 레시피를 제공했습니다. 그것 Clang 3.4.2 Recipe (Final)에서 사용할 수 있습니다. 나는 일반적으로 그냥 lldb 소스를 이용 맥 OS X에서 Xcode의 프로젝트를 사용하여 구축하고,
완벽하게, 이것이 마지막 단계였습니다. 나는 현상금을 부활 시켰고, 당신과 맷 사이에 분배 된 현상금을 얻는 방법을 알아 내려고 노력 중입니다. [보상금으로 현상금, 두 명의 수령인에게 보상] (http://meta.stackoverflow.com/questions/268972/bounty -as-reward-award-to-two-recipients)가 있습니다. – jww