无法从源代码构建LLVM

无法从源代码构建LLVM,llvm,Llvm,我指的是从源代码构建LLVM。 我正在使用Ubuntu 18.04 $ cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo ../llvm $ cmake --build . 以下是错误: [2978/2994] Linking CXX shared library lib/libLTO.so.12git FAILED: lib/libLTO.so.12git : && /usr/bin/c++ -fPIC -fPIC -fvisi

我指的是从源代码构建LLVM。 我正在使用Ubuntu 18.04

$ cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo ../llvm
$ cmake --build .
以下是错误:

[2978/2994] Linking CXX shared library lib/libLTO.so.12git
FAILED: lib/libLTO.so.12git
: && /usr/bin/c++ -fPIC -fPIC -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -O2 -g -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/kumarpr/Praveer_LLVM/llvm-project/build/./lib  -Wl,-O3 -Wl,--gc-sections  -Wl,--version-script,"/home/kumarpr/Praveer_LLVM/llvm-project/build/tools/lto/LTO.exports" -shared -Wl,-soname,libLTO.so.12git -o lib/libLTO.so.12git tools/lto/CMakeFiles/LTO.dir/LTODisassembler.cpp.o tools/lto/CMakeFiles/LTO.dir/lto.cpp.o  -Wl,-rpath,::::::::::::::  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMARMDesc.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAMDGPUDisassembler.a  lib/libLLVMARMDisassembler.a  lib/libLLVMAVRDisassembler.a  lib/libLLVMBPFDisassembler.a  lib/libLLVMHexagonDisassembler.a  lib/libLLVMLanaiDisassembler.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMSP430Disassembler.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMRISCVDisassembler.a  lib/libLLVMSparcDisassembler.a  lib/libLLVMSystemZDisassembler.a  lib/libLLVMWebAssemblyDisassembler.a  lib/libLLVMX86Disassembler.a  lib/libLLVMXCoreDisassembler.a  lib/libLLVMAArch64Info.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMNVPTXInfo.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libLLVMBitReader.a  lib/libLLVMCore.a  lib/libLLVMCodeGen.a  lib/libLLVMLTO.a  lib/libLLVMMC.a  lib/libLLVMMCDisassembler.a  lib/libLLVMSupport.a  lib/libLLVMTarget.a  lib/libLLVMMIRParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMRISCVUtils.a  lib/libLLVMGlobalISel.a  lib/libLLVMCFGuard.a  lib/libLLVMAsmPrinter.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMSelectionDAG.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMARMDesc.a  lib/libLLVMARMInfo.a  lib/libLLVMARMUtils.a  lib/libLLVMHexagonDesc.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLanaiInfo.a  lib/libLLVMSystemZDesc.a  lib/libLLVMSystemZInfo.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMMCDisassembler.a  lib/libLLVMCodeGen.a  lib/libLLVMPasses.a  lib/libLLVMTarget.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMScalarOpts.a  lib/libLLVMVectorize.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a  lib/libLLVMInstrumentation.a  lib/libLLVMHelloNew.a  lib/libLLVMBitWriter.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMExtensions.a  lib/libLLVMInstCombine.a  lib/libLLVMLinker.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMTransformUtils.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMObject.a  lib/libLLVMBitReader.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMTextAPI.a  lib/libLLVMBinaryFormat.a  lib/libLLVMSupport.a  -lrt  -ldl  -lpthread  -lm  /usr/lib/x86_64-linux-gnu/libz.so  /usr/lib/x86_64-linux-gnu/libtinfo.so  lib/libLLVMDemangle.a && :
collect2: fatal error: ld terminated with signal 9 [Killed]
compilation terminated.
[2980/2994] Linking CXX executable bin/opt
FAILED: bin/opt
: && /usr/bin/c++ -fPIC -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-class-memaccess -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -Wl,--export-dynamic  -Wl,-rpath-link,/home/kumarpr/Praveer_LLVM/llvm-project/build/./lib  -Wl,-O3 tools/opt/CMakeFiles/opt.dir/AnalysisWrappers.cpp.o tools/opt/CMakeFiles/opt.dir/BreakpointPrinter.cpp.o tools/opt/CMakeFiles/opt.dir/GraphPrinters.cpp.o tools/opt/CMakeFiles/opt.dir/NewPMDriver.cpp.o tools/opt/CMakeFiles/opt.dir/PassPrinters.cpp.o tools/opt/CMakeFiles/opt.dir/PrintSCC.cpp.o tools/opt/CMakeFiles/opt.dir/opt.cpp.o -o bin/opt  -Wl,-rpath,::::::::::::::  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMARMDesc.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Info.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMNVPTXInfo.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMAnalysis.a  lib/libLLVMAsmParser.a  lib/libLLVMBitWriter.a  lib/libLLVMCodeGen.a  lib/libLLVMCore.a  lib/libLLVMCoroutines.a  lib/libLLVMExtensions.a  lib/libLLVMipo.a  lib/libLLVMIRReader.a  lib/libLLVMInstCombine.a  lib/libLLVMInstrumentation.a  lib/libLLVMMC.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMRemarks.a  lib/libLLVMScalarOpts.a  lib/libLLVMSupport.a  lib/libLLVMTarget.a  lib/libLLVMTransformUtils.a  lib/libLLVMVectorize.a  lib/libLLVMPasses.a  -lpthread  lib/libLLVMAArch64Utils.a  lib/libLLVMCoroutines.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMHelloNew.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMMIRParser.a  lib/libLLVMARMUtils.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMHexagonDesc.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLanaiInfo.a  lib/libLLVMipo.a  lib/libLLVMIRReader.a  lib/libLLVMAsmParser.a  lib/libLLVMInstrumentation.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMLinker.a  lib/libLLVMVectorize.a  lib/libLLVMRISCVUtils.a  lib/libLLVMMCDisassembler.a  lib/libLLVMGlobalISel.a  lib/libLLVMCFGuard.a  lib/libLLVMAsmPrinter.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMSelectionDAG.a  lib/libLLVMCodeGen.a  lib/libLLVMBitWriter.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMTarget.a  lib/libLLVMTransformUtils.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMBitReader.a  lib/libLLVMTextAPI.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMBinaryFormat.a  lib/libLLVMSupport.a  -lrt  -ldl  -lpthread  -lm  /usr/lib/x86_64-linux-gnu/libz.so  /usr/lib/x86_64-linux-gnu/libtinfo.so  lib/libLLVMDemangle.a && :
collect2: fatal error: ld terminated with signal 9 [Killed]
compilation terminated.
[2982/2994] Linking CXX executable bin/llvm-isel-fuzzer
FAILED: bin/llvm-isel-fuzzer

有人对此有所了解吗?

如评论中所述,您很可能内存不足:默认情况下,所有可执行文件都是静态链接的,因此
ld
s会使用大量RAM。有几种方法可以解决这一问题:

  • 通过
    -DLLVM\u PARALLEL\u link\u JOBS=1减少链接并行性,以避免并行启动过多链接(顺便说一句,对于通用代码库,可以使用它来实现相同的效果)

  • 通过使用
    -Wl,-no keep memory
    -Wl中的一个或两个来减少消耗的内存,-减少内存开销
    链接器标志(将它们添加到
    CMAKE\u EXE\u linker\u标志

  • 切换到Gold(通过
    -fuse ld=Gold
    )或lld(通过
    -fuse ld=lld
    )链接器(将开关添加到
    CMAKE_EXE_链接器_标志

  • 如果您计划经常重新生成Clang(例如用于调试),您可以使用
    -DBUILD\u SHARED\u LIBS=ON
    使用共享链接,而不是静态链接。您将不再拥有oom,而且增量Clang构建速度将提高100倍(代价是Clang运行时间降低2-3倍)


  • 正如在注释中提到的,您很可能内存不足:默认情况下,所有可执行文件都是静态链接的,因此
    ld
    s会使用大量RAM。有几种方法可以解决这一问题:

  • 通过
    -DLLVM\u PARALLEL\u link\u JOBS=1减少链接并行性,以避免并行启动过多链接(顺便说一句,对于通用代码库,可以使用它来实现相同的效果)

  • 通过使用
    -Wl,-no keep memory
    -Wl中的一个或两个来减少消耗的内存,-减少内存开销
    链接器标志(将它们添加到
    CMAKE\u EXE\u linker\u标志

  • 切换到Gold(通过
    -fuse ld=Gold
    )或lld(通过
    -fuse ld=lld
    )链接器(将开关添加到
    CMAKE_EXE_链接器_标志

  • 如果您计划经常重新生成Clang(例如用于调试),您可以使用
    -DBUILD\u SHARED\u LIBS=ON
    使用共享链接,而不是静态链接。您将不再拥有oom,而且增量Clang构建速度将提高100倍(代价是Clang运行时间降低2-3倍)


  • 尝试构建一个特定的发布标签,而不是主/主分支。只是想知道它会有什么不同。签出LLVM(包括相关的子项目,如Clang):git clone或在windows上的git clone--config core.autocrlf=false这会有所不同,因为没有人保证像master这样的不稳定分支始终能够成功编译,但发布标记必须始终成功。您可能正在耗尽内存。“实际上我并没有耗尽内存”-你怎么知道的?尝试运行
    make-j1
    -如果成功,您正在运行OOM。尝试构建一个特定的发布标签,而不是主/主分支。只是想知道它会有什么不同。签出LLVM(包括相关的子项目,如Clang):git clone或在windows上的git clone--config core.autocrlf=false这会有所不同,因为没有人保证像master这样的不稳定分支始终能够成功编译,但发布标记必须始终成功。您可能正在耗尽内存。“实际上我并没有耗尽内存”-你怎么知道的?尝试运行
    make-j1
    -如果成功,您将运行OOM。现在我使用以下命令:
    “cmake-G Ninja-DCMAKE\u BUILD\u TYPE=Release-DLLVM\u PARALLEL\u LINK\u JOBS=1../llvm”
    make--BUILD。
    我没有看到任何错误,但似乎它并没有构建所有内容,构建几乎不需要10分钟完成。下面是终端上的消息:
    [2994/2994]链接CXX共享模块unittests/Pass/TestPlugin。那么
    有什么问题吗。我第一次从源代码构建LLVM。所以我不知道这是预期的还是预期的not@PraveerKumar“似乎它没有构建所有内容”-bin/?中是否缺少任何特定的可执行文件?我可以看到它在bin文件夹中生成了83个文件。我得到了我正在寻找的libs文件。感谢我使用下面的lotNow命令:
    “cmake-G Ninja-DCMAKE\u BUILD\u TYPE=Release-DLLVM\u PARALLEL\u LINK\u JOBS=1../llvm”
    make--BUILD.
    我没有看到任何错误,但似乎它并没有构建所有内容,构建几乎不需要10分钟就可以完成。下面是终端上的消息:
    [2994/2994]链接CXX共享模块unittests/Pass/TestPlugin。那么
    有什么问题吗。我第一次从源代码构建LLVM。所以我不知道这是预期的还是预期的not@PraveerKumar“似乎它没有构建所有内容”-bin/?中是否缺少任何特定的可执行文件?我可以看到它在bin文件夹中生成了83个文件。我得到了我正在寻找的libs文件。谢谢