[llvm-dev] Memory overflow during cmake/ninja build
Ron Brender via llvm-dev
llvm-dev at lists.llvm.org
Sat Jun 22 06:37:32 PDT 2019
Peter, Steve, Alex, Neil,
Thanks for the many suggestions. I will try again this weekend...
Ron
On 6/21/2019 9:25 PM, Neil Nelson via llvm-dev wrote:
> It has also been suggested to try compiling with clang and linking
> with lld. The gold linker should be already installed and is also
> recommended to reduce memory use.
>
> apt install clang
>
> apt install lld
>
> 4G is very tight. You will want to run just the terminal emulator for
> the compile and another running top to see when you go into swap and
> what process is doing that. You will need to avoid running anything
> else that is not absolutely necessary to make the most memory available.
>
> You can control-c out of the compile sequence and restart at any time.
> The sequence will resume.
>
> If you have more than one core and it goes into swap, you might stop
> the compile and use
>
> ninja -j 1
>
> to try to squeak through. You can stop the compile, go back to more
> cores, and restart in more easy stretches.
>
> I used
>
> cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_USE_LINKER=lld
> -DCMAKE_BUILD_TYPE="Release" ../llvm
>
> this morning and it appeared in general to stay below 4G and perhaps
> with enough swap you will make it. But when it goes into heavy swap,
> you are doing a number on your disk with not much forward gain.
>
> If you change compilers such as from GNU cpp to clang after running
> the above cmake you will need to delete the build directory for the
> new compiler to be used.
>
> Change the compiler (after apt above) by adding the following lines to
> /etc/environment and reboot.
> export CC=clang
> export CXX=clang++
>
> On 6/21/19 8:00 AM, Ron Brender via llvm-dev wrote:
>> I'm trying to do a simple build from the git 8.0.0 sources. The
>> sources seem to build OK but a link step fails from running out of
>> memory. I need some clues how to figure out where the bottleneck
>> might be.
>>
>> The cmake command is:
>>
>> cmake -G Ninja \
>> -DLLVM_TARGETS_TO_BUILD=X86 \
>> -DCMAKE_INSTALL_PREFIX=/home/ron/bin/llvm_project/ \
>> ~/llvm-project/llvm
>>
>> All seems to go well up until this link step:
>>
>> [8/323] Linking CXX executable bin/llvm-lto
>> FAILED: bin/llvm-lto
>> : && /usr/bin/c++ -fPIC -fvisibility-inlines-hidden
>> -Werror=date-time -std=c++11 -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 -g -Wl,-allow-shlib-undefined
>> -Wl,-rpath-link,/home/ron/llvm-project/build-try3/./lib
>> tools/llvm-lto/CMakeFiles/llvm-lto.dir/llvm-lto.cpp.o -o
>> bin/llvm-lto -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMX86CodeGen.a
>> lib/libLLVMX86AsmParser.a lib/libLLVMX86AsmPrinter.a
>> lib/libLLVMX86Desc.a lib/libLLVMX86Disassembler.a
>> lib/libLLVMX86Info.a lib/libLLVMX86Utils.a lib/libLLVMBitReader.a
>> lib/libLLVMBitWriter.a lib/libLLVMCore.a lib/libLLVMIRReader.a
>> lib/libLLVMLTO.a lib/libLLVMMC.a lib/libLLVMObject.a
>> lib/libLLVMSupport.a lib/libLLVMTarget.a -lpthread
>> lib/libLLVMAsmPrinter.a lib/libLLVMDebugInfoDWARF.a
>> lib/libLLVMGlobalISel.a lib/libLLVMSelectionDAG.a
>> lib/libLLVMX86AsmPrinter.a lib/libLLVMX86Utils.a
>> lib/libLLVMMCDisassembler.a lib/libLLVMObjCARCOpts.a
>> lib/libLLVMPasses.a lib/libLLVMCodeGen.a lib/libLLVMTarget.a
>> lib/libLLVMipo.a lib/libLLVMBitWriter.a lib/libLLVMIRReader.a
>> lib/libLLVMAsmParser.a lib/libLLVMLinker.a lib/libLLVMScalarOpts.a
>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a
>> lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a
>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMObject.a
>> lib/libLLVMBitReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a
>> lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a
>> lib/libLLVMProfileData.a lib/libLLVMCore.a lib/libLLVMBinaryFormat.a
>> lib/libLLVMSupport.a -lrt -ldl -lpthread -lm lib/libLLVMDemangle.a && :
>> /usr/bin/ld:
>> /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/librt.so:
>> error adding symbols: memory exhausted
>> collect2: error: ld returned 1 exit status
>> [9/323] Building CXX object
>> tools/bugpoint/CMakeFiles/bugpoint.dir/bugpoint.cpp.o
>> [10/323] Linking CXX shared library lib/libLTO.so.9svn
>> ninja: build stopped: subcommand failed.
>>
>> My hardware is a rather ancient HP a6745f (AMD) with 4GB memory, 200
>> GB HDD. OS is Kubuntu 18.10.
>>
>> Is my system just too limited or is there something else I should
>> look for? What other info can I provide?
>>
>> Ron
>>
>>
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Ron Brender
Whose favorite airplane is N6119A, a 1979 Cessna T210.
More information about the llvm-dev
mailing list