如何限制raspberrypi上cmake的RAM数量?

时间:2019-01-08 12:55:38

标签: cmake raspberry-pi ram

我正在尝试在raspberry pi上编译项目(tdbot),但是当编译达到50%时,可用RAM耗尽,并且操作系统( Raspbian GNU / Linux 9(stretch))在pi v3,1GB RAM)终止编译器线程,从而导致错误:

[ 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%,等等。

我通过在CONF_SWAPSIZE=8192中设置/etc/dphys-swapfile(在50%编译时的内存使用情况)中配置了一个8GB的交换文件。

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

但是即使使用8GB的交换内存,编译器进程仍然可以杀死50%。

我已经搜索了好几个小时,试图找到任何make或cmake的编译标志,这些标志会减少RAM的需求,但找不到任何东西。

我也使用make -j 1来仅使用一个内核,但这两个都没有帮助。

还有其他方法可以使编译成功吗?

0 个答案:

没有答案