gpt4 book ai didi

c++ - undefined symbol SystemRuntimeMacOSX::Initialize 和 SystemRuntimeMacOSX::Terminate

转载 作者:太空狗 更新时间:2023-10-29 23:27:54 26 4
gpt4 key购买 nike

我正在尝试构建 LLDB 作为 Clang/LLVM 的一部分. LLVM、Clang、Compiler-RT 和 Extras 构建正常。但是,LLVM 在与其他组件一起构建时会出现问题。

目录结构根据LLVM/Clang/LLDB指令设置。 LLDB 上的文档位于 Building LLDB .下面是从 build 目录运行的,该目录位于 llvm 目录旁边(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

编辑:跟随 Matt 的 instructions below ,我能够避免 Undefined symbols SystemRuntimeMacOSX::Initialize 和 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.

奇怪的是,lldbPluginSystemRuntimeMacOSXlldbPluginProcessMachCore 等其他插件的处理方式相同。相同的指令出现在相同的位置,例如 Cmake.txt

主机平台是 OS X 10.8.5,x64,已完全修补。 Xcode 版本为 5.1.1 (5B1008)(最新)。

有谁知道我应该执行哪些神奇的步骤来让 lldb 使用 LLVM 和 Clang 进行编译?

100 赏金编辑:在 Clang 3.4.2 recipe 的 shell 脚本中有一个包含我的食谱的 pastebin .该配方使用 Missing-Makefile,Matt 在下面提供了它。配方会修补 makefile,因此您无需手动操作。

150 赏金编辑:Cos 的回答是最后一步。这个问题既需要Matt的回答,也需要Cos的回答。 Cos 提供了更新的食谱。可在 Clang 3.4.2 Recipe (Final) 获得.

最佳答案

您需要在脚本中添加以下补丁:

sed -i '' '\|DIRS += Process/mach-core|a\
DIRS += SystemRuntime/MacOSX\
' llvm/tools/lldb/source/Plugins/Makefile

Your updated recipe

关于c++ - undefined symbol SystemRuntimeMacOSX::Initialize 和 SystemRuntimeMacOSX::Terminate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24923650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com