Уменьшение объема памяти, используемой make

#cmake

#cmake

Вопрос:

Я пытался создать xmrig для raspberry pi, но он всегда не может быть собран, потому что у cc1plus закончилась память. Я знаю, что RPi не имеет высокого хэшрейта, я просто экспериментирую. Ошибка, которую я получаю при выполнении официальной сборки Ubuntu:

 cc1plus: out of memory allocating 5190462000 bytes after a total of 1040547840 bytes
make[2]: *** [CMakeFiles/xmrig.dir/build.make:2598: CMakeFiles/xmrig.dir/src/crypto/rx/RxDataset.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:118: CMakeFiles/xmrig.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
  

Это происходит во время выполнения команды make . Все остальные предыдущие команды работали.

Комментарии:

1. Вы уверены, что это cmake, потребляющий такой объем памяти? Для меня это выглядит так, как будто ваш компилятор — это программа, которая это делает. Не уверен, почему это пытается выделить> 5 гигабайт памяти. Вы пропустили некоторые защиты заголовка?

2. Я не уверен. Я попробую то, что упоминал @ hdf89shfdfs. У меня 4 ГБ Raspberry Pi 4. Мне удалось заставить его работать под управлением Manjaro для 64-разрядной версии ARM. В настоящее время я использую Kali.

Ответ №1:

Вот моя попытка ответа.

Если в вашей системе недостаточно оперативной памяти для поддержки вашего компилятора, возможно, стоит рассмотреть возможность ограничения количества заданий. Мой коллега столкнулся с этой проблемой при компиляции LLVM.

На этапе сборки ограничьте количество заданий.

 cmake --build build/ --parallel x
  

https://cmake.org/cmake/help/latest/manual/cmake.1.html

Вы можете ограничить количество используемых потоков. Cmake определенно не использует столько памяти. Компилятор. Вы можете ограничить объем используемой памяти, ограничив количество потоков / заданий, которые разрешено использовать компилятору.

Комментарии:

1. Проблема по-прежнему сохраняется. cc1 plus по какой-то причине пытается выделить 5 ГБ оперативной памяти. Есть ли какие-либо параметры, которые я могу использовать для ограничения использования ОЗУ компилятором?