Как ограничить объем оперативной памяти для cmake на raspberrypi? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь скомпилировать проект ( tdbot ) на raspberry pi, но когда компиляция достигает 50%, доступная оперативная память исчерпывается и ОС ( Raspbian GNU / Linux 9 (stretch) работает на pi v3, 1 ГБ ОЗУ) убивает поток компилятора, что приводит к ошибке:

[ 50%] Building CXX object td/CMakeFiles/tdcore.dir/td/telegram/AnimationsManager.cpp.o
make[3]: *** wait: No child processes.  Stop.
make[3]: *** Waiting for unfinished jobs....
make[3]: *** wait: No child processes.  Stop.
CMakeFiles/Makefile2:341: recipe for target 'td/CMakeFiles/tdcore.dir/all' failed
make[2]: *** [td/CMakeFiles/tdcore.dir/all] Error 2
CMakeFiles/Makefile2:86: recipe for target 'CMakeFiles/telegram-bot.dir/rule' failed
make[1]: *** [CMakeFiles/telegram-bot.dir/rule] Terminated
Makefile:162: recipe for target 'telegram-bot' failed
make: *** [telegram-bot] Terminated
./build.sh: line 1:  9784 Terminated              make -j 1 telegram-bot

Один и тот же проект прекрасно работает на linux и macos. Точный процент и имя файла, где процесс компилятора убит, может варьироваться в зависимости от сборки, то есть может составлять 50% или 51% и т. Д.

Я настроил файл подкачки на 8 ГБ, установив CONF_SWAPSIZE=8192 в /etc/dphys-swapfile (использование памяти при компиляции 50%).

free -h
              total        used        free      shared  buff/cache   available
Mem:           875M        825M         30M          0B         20M         16M
Swap:          8.0G        828M        7.2G

Но даже при использовании своп-памяти 8 ГБ процесс компилятора все равно прерывается на 50%.

Я часами гуглял, пытаясь найти какие-либо флаги компиляции для make или cmake, которые уменьшат требования к ОЗУ, но ничего не смогли найти.

Я также использовал make -j 1, чтобы использовать только одно ядро, но это тоже не помогло.

Есть ли другой способ добиться успеха компиляции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...