做的比较好的海鲜网站,临沂森工木业有限公司,网站后台模板 仿cnzz,乐清网LLVM 编译安装
克隆代码到本地
git clone https://github.com/llvm/llvm-project.git
# 需要时间比较长 如果不需要做额外的操作可以只克隆最新的commit
git clone --depth 1 https://github.com/llvm/llvm-project.git配置编译选项
cd llvm-project
cmake -S llvm -B build…LLVM 编译安装
克隆代码到本地
git clone https://github.com/llvm/llvm-project.git
# 需要时间比较长 如果不需要做额外的操作可以只克隆最新的commit
git clone --depth 1 https://github.com/llvm/llvm-project.git配置编译选项
cd llvm-project
cmake -S llvm -B build -G generator [options]generator一般使用Ninja而 options 中必须要传入的参数是构建类型CMAKE_BUILD_TYPE
不同的CMAKE_BUILD_TYPE区别如下
Build TypeOptimizationDebug InfoAssertionReleaseFor SpeedNoNoDebugNoneYesYesRelWithDebInfoFor SpeedYesNoMinSizeRelFor SizeNoNo
Release适合LLVM和Clang的用户针对运行速度进行了优化基本没有任何调试信息和断言信息。Debug适合LLVM的开发者输出的信息最丰富但没有进行任何方面的优化。RelWithDebInfo适合有部分开发需求的用户该构建方式针对速度进行了优化且会输出调试信息。MinSizeRel适合空间硬盘空间受限的用户该构建方式同样没有任何调试信息和断言信息但是针对占用空间大小进行了优化。
综上所述一般的构建可以通过下面的命令进行
cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPEDebug
cmake --build build编译报错解决
编译LLVM时报错
[3223/3502] Linking CXX executable bin/llvm-c-test
FAILED: bin/llvm-c-test
: /usr/bin/c -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werrordate-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -g -Wl,-rpath-link,/home/shanlin/llvm-project/build/./lib tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/attributes.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/calc.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/debuginfo.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/diagnostic.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/disassemble.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/echo.cpp.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/helpers.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/include-all.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/main.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/module.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/metadata.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/object.c.o tools/llvm-c-test/CMakeFiles/llvm-c-test.dir/targets.c.o -o bin/llvm-c-test -Wl,-rpath,\$ORIGIN/../lib:/usr/local/lib: lib/libLLVMAArch64AsmParser.a lib/libLLVMAMDGPUAsmParser.a lib/libLLVMARMAsmParser.a lib/libLLVMAVRAsmParser.a lib/libLLVMBPFAsmParser.a li.....
lib/libLLVMBitstreamReader.a lib/libLLVMTextAPI.a lib/libLLVMDebugInfoMSF.a lib/libLLVMDebugInfoBTF.a lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a lib/libLLVMHexagonDesc.a lib/libLLVMHexagonInfo.a lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a lib/libLLVMLoongArchDesc.a lib/libLLVMLoongArchInfo.a lib/libLLVMRISCVDesc.a lib/libLLVMRISCVInfo.a lib/libLLVMSystemZDesc.a lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a lib/libLLVMMCDisassembler.a lib/libLLVMCodeGenTypes.a lib/libLLVMMC.a lib/libLLVMBinaryFormat.a lib/libLLVMTargetParser.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMSupport.a lib/libLLVMDemangle.a -lrt -ldl -lpthread -lm /usr/local/lib/libz.so /usr/lib/x86_64-linux-gnu/libtinfo.so :
collect2: fatal error: ld terminated with signal 9 [Killed]
compilation terminated.查了一下网上给出的解决方法和原因
这种情况很可能是OOM了因为默认情况下所有的可执行文件都是静态链接的所以会需要很多RAM
解决方法如下
减少链接时的并行通过添加-DLLVM_PARALLEL_LINK_JOBS1编译选项来控制链接的并行。通过-Wl, no-keep-memory和 -Wl,--reduce-memory-overheads两个或其中一个加入CMAKE_EXE_LINKER_FLAGS来减少内存的消耗。更换链接器通过添加-fuse-ldgold或者-fuse-ldlld到CMAKE_EXE_LINKER_FLAGS来更换链接器。
尝试了方法1直接解决了
cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPEDebug -DLLVM_PARALLEL_LINK_JOBS1
cmake --build buildcmake 参数
-S : path to the source-B : path to the build–build : build a CMake-generate project binary tree.