内部编译器错误:Raspberry Pi 上的分段错误

rre*_*hel 6 c++ linux opencv raspberry-pi

当尝试在 Raspberry Pi 上构建 OpenCV 3.3.0 时,我不断遇到编译器级别的分段错误。我正在遵循此处有关构建优化 OpenCV 库的指南。

然而,当我尝试运行make -j4来自编译器的许多分段错误时,cmake 步骤工作得很好。

rre*_*hel 2

这个问题的解决方案最终是与多个作业的使用相关的。我仍然不是 100% 确定原因是什么,但是在使用flag 而不是flag 运行make命令时,它编译得很好,尽管慢得多。我认为这可能是由于在资源稀疏的计算机上运行时出现的内存分配错误造成的。-j2-j4

#Fixed command:
make -j2
Run Code Online (Sandbox Code Playgroud)

编辑:修改文本以更准确地描述 -j 标志的作用。

  • `make` 的 `-j` 标志用于启动多个[并行构建进程](https://www.gnu.org/software/make/manual/html_node/Parallel.html)。Rasperry Pi 的内存相当小(与现代普通 PC 相比),并且编译可能会占用大量内存,因此尝试启动许多进程可能会耗尽内存,从而导致段错误(取决于当前负载等)。如果你打算为你的 Raspberry 编译很多东西,你可以考虑[交叉编译](https://medium.com/@au42/the-useful-raspberrypi-cross-compile-guide-ea56054de187)。 (2认同)