代码之家  ›  专栏  ›  技术社区  ›  QLM

由于虚拟内存不足,在32位系统上编译clang失败

  •  2
  • QLM  · 技术社区  · 8 年前

    编译过程在93%时失败,错误如下:

    [ 93%] Linking CXX executable ../../bin/clang
    /lib/ld-linux.so.2: could not read symbols: Memory exhausted
    collect2: error: ld returned 1 exit status
    gmake[2]: *** [bin/clang-3.9] Error 1
    gmake[1]: *** [tools/driver/CMakeFiles/clang.dir/all]
    Error 2 gmake: *** [all] Error 2
    

    我的机器有8GB的RAM,从链接过程中内存使用情况的变化来看,我发现它在3GB之后失败,这是32位linux的进程虚拟内存限制。

    我看到,对于一个非常类似的问题,有人建议编译发布版本,所以我尝试了,但失败了,并出现了相同类型的错误(即使显然更进一步):

    [ 93%] Linking CXX executable ../../bin/clang
    collect2: error: ld terminated with signal 11 [Segmentation fault]
    /opt/rh/devtoolset-2/root/usr/libexec/gcc/i686-redhat-linux/4.8.2/ld: can not read symbols: Memory exhausted
    gmake[2]: *** [bin/clang-3.9] Error 1
    gmake[2]: *** Deleting file `bin/clang-3.9'
    gmake[1]: *** [tools/driver/CMakeFiles/clang.dir/all] Error 2
    gmake: *** [all] Error 2
    

    有什么想法吗?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Yinon Ehrlich    6 年前

    在GCC中,以下标志有助于有限RAM环境中的ld:

    -Wl,--no-keep-memory -Wl,--reduce-memory-overheads