【问题标题】:collect2: fatal error: ld terminated with signal 9 [Killed]collect2:致命错误:ld 以信号 9 [Killed] 终止
【发布时间】:2018-02-25 20:07:45
【问题描述】:

我正在尝试在 Ubuntu 16.04.3 x64 上构建 precimonious。我为它分配了 1GB 内存。我的文件结构看起来像

~
|--- llvm/
|--- precimonious/

如https://github.com/corvette-berkeley/precimonious#requirement 所述,llvm 位于 3.0 版上。然后我按照自述文件中的步骤操作,但命令 make 以

结尾
...
llvm[1]: Linking Debug Shared Library libLLVM-3.0.so
collect2: fatal error: ld terminated with signal 9 [Killed]
compilation terminated.
...

我在网上浏览了一些答案,他们说这可能是因为没有足够的内存来执行链接。但是内存使用情况就像

我机器上的 gcc 版本是gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4),是通过apt-get install build-essential 安装的。这是我刚刚在 DigitalOcean 上创建的新液滴。任何帮助表示赞赏。

【问题讨论】:

    标签: ubuntu gcc ld


    【解决方案1】:

    我在 Ubuntu 上安装 snort 时遇到了同样的错误,它位于一个具有 2 GB RAM 的虚拟机中。我将 RAM 增加到 4 GB,它对我有用。

    【讨论】:

      【解决方案2】:

      您可以使用以下方法解决此问题:

       cargo run --release --verbose --jobs 1
      

      【讨论】:

      • 为我修复了它。谢谢。
      【解决方案3】:

      我遇到了这个问题,并通过以下方式解决:

      • 增加SWAP 磁盘(8 GB 与我一起使用)。
      • 增加内存(我在虚拟机上,8 GB)。
      • 您需要27 GB (LLVM 6.0.0) 可用磁盘空间(在终端中使用df -h 检查)。

      【讨论】:

      【解决方案4】:

      有时系统会因为 CPU 过载而终止链接器。如果您的构建是并行的,请尝试-l 选项(make 和 ninja 支持它)。 Looks 和你的情况类似。

      为了减少系统负载,构建 llvm 的发布版本。调试版本的链接成本要高得多。

      llvm[1]:链接调试共享库 libLLVM-3.0.so

      【讨论】:

        【解决方案5】:

        这是内存耗尽。内存测量的采样间隔不够小,不足以覆盖 OOM 杀手启动的确切点。

        根据容器/VM 技术,您可以在构建之前设置vm.overcommit_memory=2,这样进程就不会被终止(但这样做实际上需要更多内存和交换空间才能完成构建)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-27
          • 2014-10-11
          • 1970-01-01
          • 2016-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-10
          相关资源
          最近更新 更多