我是初学者,我想从源代码构建 LLVM、clang 和 Libfuzzer。所以我运行 cmake 命令
cmake -S llvm -B build -G Ninja \
-DLLVM_ENABLE_PROJECTS="clang;lldb" \
-DLLVM_ENABLE_RUNTIMES="libcxx" \
-DCMAKE_BUILD_TYPE=Debug \
-DLLVM_TARGETS_TO_BUILD="AArch64" \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_USE_SANITIZER=Address \
-DLLVM_USE_SANITIZE_COVERAGE=On \
-DLLDB_USE_SYSTEM_DEBUGSERVER=ON \
-DCMAKE_C_COMPILER=/opt/homebrew/opt/llvm/bin/clang \
-DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++ \
-DCMAKE_OSX_ARCHITECTURES='arm64' \
-DCMAKE_CXX_FLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
但是当我构建它时,它得到了错误:
llvm-project/llvm/tools/vfabi-demangle-fuzzer/vfabi-demangler-fuzzer.cpp:20:16:错误:变量具有不完整类型“SMDiagnostic”
20 | SMD诊断错误;
llvm-project/llvm/include/llvm/AsmParser/Parser.h:29:7:注意:‘llvm::SMDiagnostic’的前向声明
29 | 29 SMDiagnostic 类;
llvm-project/llvm/tools/vfabi-demangle-fuzzer/vfabi-demangler-fuzzer.cpp:33:44:错误:成员访问不完整类型“llvm::Module”
33 | FunctionType::get(Type::getVoidTy(M->getContext()), false);
llvm-project/llvm/include/llvm/AsmParser/Parser.h:26:7:注意:‘llvm::Module’的前向声明
26 | 26类模块;
产生 2 个错误。
[3998/4053]构建CXX对象工具/llvm-r…/CMakeFiles/llvm-readobj.dir/ELFDumper.cpp.o
忍者:构建停止:子命令失败。
当我问chatgpt时,答案是在文件中包含一些标头。我这样做了,但构建仍然失败。 libfuzzer 需要这个文件吗?我可以更改我的 cmake 命令以正确构建在 LibFuzzer 中处理我的项目所需的所有必要项目吗,我认为是 llvm、clang、lldb 和 Libfuzzer。请给我任何有关如何解决此问题并正确构建的想法。非常感谢您的帮助。
要构建 lldb 这些天你必须做:
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;compiler-rt;libunwind"
当您构建它时,您需要与
clangTooling
一起构建 lldb
。如果您遇到更多问题,您可以尝试在以下位置提交问题: