我正在尝试安装 drake 的 python 绑定。在 make --j 之后它会冻结。我相信我已经正确地完成了前面的步骤。任何人都可以帮忙吗?我正在使用 python 3.6.9 在 Ubuntu 18.04 上运行。
先感谢您。它看起来像这样。
使用make
(无-j
标志)或make -j1
因为bazel
(在构建期间内部调用)处理构建(和测试)的并行性,并将默认情况下将作业数设置为核心数(在您的情况下似乎为 8) .
要调整并行度以将作业数减少到少于内核数,user.bazelrc
请在存储库的根目录(与文件相同的级别WORKSPACE
)创建一个文件,其内容为
test --jobs=N
对于一些N
少于您拥有的核心数量。
另请参阅https://docs.bazel.build/versions/master/guide.html#bazelrc。
从屏幕截图来看,drake 构建系统似乎没有做错任何事情。但make -j
可能是试图并行做太多的事情。尝试从开始,-j4
如果它仍然冻结,请转到2
等。
可能是内存不足。。
一个 hacky 解决方案是更改CMakeLists.txt
文件以设置 bazel 使用的最大作业数,方法是在这样--jobs N
之后添加(其中 N 是您同时允许的作业数)${BAZEL_TARGETS}
ExternalProject_Add(drake_cxx_python
SOURCE_DIR "${PROJECT_SOURCE_DIR}"
CONFIGURE_COMMAND :
BUILD_COMMAND
${BAZEL_ENV}
"${Bazel_EXECUTABLE}"
${BAZEL_STARTUP_ARGS}
build
${BAZEL_ARGS}
${BAZEL_TARGETS}
--jobs 1
BUILD_IN_SOURCE ON
BUILD_ALWAYS ON
INSTALL_COMMAND
${BAZEL_ENV}
"${Bazel_EXECUTABLE}"
${BAZEL_STARTUP_ARGS}
run
${BAZEL_ARGS}
${BAZEL_TARGETS}
--
${BAZEL_TARGETS_ARGS}
USES_TERMINAL_BUILD ON
USES_TERMINAL_INSTALL ON
)