如何修复 ubuntu 16.04 上的 make 错误

How to fix make errors on ubuntu 16.04

尝试在 ubuntu:16.04 上 dockerize bitcoin-sv,但最后一步出错。 一段 Dockerfile :

RUN mkdir boost \
    && cd boost \
    && wget https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz \
    && tar -xzvf boost_1_70_0.tar.gz \
    && cd boost_1_70_0 \
    && ./bootstrap.sh \
    && ./b2 \
    && ./b2 install \
    && cd ../../ \
    && git clone https://github.com/bitcoin-sv/bitcoin-sv \
    && cd bitcoin-sv \
    && ./autogen.sh \
    && mkdir build \
    && cd build \
    && ../configure \
    && make <------------- error on this final step

错误:

Makefile:4415: recipe for target 'rpc/libbitcoin_cli_a-client.o' failed
make[2]: *** [rpc/libbitcoin_cli_a-client.o] Error 1
make[2]: Leaving directory '/bitcoin-sv/build/src'
Makefile:8455: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/bitcoin-sv/build/src'
Makefile:660: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

阅读here可能是内存不足。如何解决?

又记录了一个错误。 docker 机器

内存不足
../../src/validation.cpp:4046:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 cacheSize > std::max(static_cast<uint64_t>((9 * nTotalSpace) / 10),
                 ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                      nTotalSpace - MAX_BLOCK_COINSDB_USAGE * ONE_MEBIBYTE);
                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
g++: internal compiler error: Killed (program cc1plus)

错误 g++: internal compiler error: Killed (program cc1plus) 几乎总是由于内存太少 - 正如 Jon 在 Whosebug post 中更详尽地解释的那样。

运行 在 ubuntu 上(不是指在 ubuntu 上的虚拟机中)您的机器可能内存不足,因为 docker 可以访问整个内存据我所知 Linux 主机。如果 运行 在虚拟机中,请确保它有足够的可用内存,然后它可用于 docker。

对于 macOS 或 Windows,您可以通过跟随 Roberts 到(不太正确短语)Whosebug 问题 'How to assign more memory to docker container'.