首页 > 解决方案 > 在 Docker 中使用 g++ 时出现“内部编译器错误”

问题描述

我正在尝试在 Makefile 构建系统下使用 g++ 编译我的 C++ 项目。但是,在编译过程中,随机出现以下错误信息:

random source file A.cpp:xxx:xx: internal compiler error: Segmentation fault
   random location
          ^~~~~~~~
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.

如果我重试该make命令,A.cpp错误就会消失,但它可能会重新出现在 中的另一个随机位置B.cpp,因此我需要重复该过程直到编译完成。

我已经用谷歌搜索了这个问题,似乎(根据这个GitHub 线程)OOM 是发生这种情况的原因。但是,我在docker-compose中尝试了以下解决方案,但它们都不能保证一次性编译成功:

我确信 8G 内存足以编译项目,因为我可以在不使用 docker 的情况下本地完成它,但是引入 docker 会导致上述错误随机发生。我可以知道我应该如何解决这个问题吗?

PS 我正在使用 docker 19.03.8 和 g++ 7.5.0

标签: dockerg++

解决方案


这可能是共享内存限制?您可以从默认的 64M 增加共享内存大小,例如:

docker run -it --shm-size=512m

或使用 docker-compose:

shm_size: 512M

这里


推荐阅读